Удаление лишних пробелов в свойствах типа "Строка"

Часто бывает, что нерадивые контентщики копируя что-то, при заполнении характеристик, захватывают пробелы в начале и конце текста. Что чревато серьезными проблемами...

Как показывает практика, редкий юзверь понимает тот простой факт, что пробел тоже символ, как буквы и цифры. В результате имеем фильтр в каталоге, в котором некоторые свойства встречаются несколько раз, причем при выборе "одного и того же" свойства получаем разные результаты фильтрации.

Дублирование свойства с пробелами

Визуально на сайте свойства выглядят абсолютно одинаково и пользователей ставят в тупик вид фильтра и результаты фильтрации. Посмотрим код в браузере, чтобы визуализировать проблему:

Код свойства с лишними пробелами

Как быть, особенно если в каталоге более 30000 товаров и абсолютно не понятно когда появилось свойство с ошибкой?

Ручной поиск и удаление этих пробелов... Трудно представить более муторную работу. Воспользуемся скриптом:

<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");?>
<?
if(Bitrix\Main\Loader::includeModule("iblock")){
    //Символьный код свойства, в данном случае VID_IZDELIA
    $PROP_CODE="VID_IZDELIA";

    //Получаем элементы
    $res=CIBlockElement::GetList(false,array("!PROPERTY_".$PROP_CODE=>false),false,false,array("ID","IBLOCK_ID","NAME","PROPERTY_".$PROP_CODE));
    $arItems=array();
    while ($obj=$res->GetNext(true,false)){
        if($obj["PROPERTY_".$PROP_CODE."_VALUE"])
        {
            if(substr("PROPERTY_".$PROP_CODE."_VALUE",-1)==" "){
                $obj["PROPERTY_".$PROP_CODE."_VALUE"]=trim($obj["PROPERTY_".$PROP_CODE."_VALUE"]);
                $arItems[]=$obj;
            }
        }
    }
    if($arItems){
        foreach ($arItems as $arItem){
            if($arItem["PROPERTY_".$PROP_CODE."_VALUE"]){
            CIBlockElement::SetPropertyValuesEx($arItem["ID"], false, array($PROP_CODE => $arItem["PROPERTY_".$PROP_CODE."_VALUE"]));
            }
        }
    }
}
?>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
 

Вот и все, мы избавили себя от часов унылой, скучной и монотонной работы.


Возврат к списку

Комментарии

Загрузка комментариев...