Продукт может иметь следующий столбец для размера:
<column name="size"><![CDATA[L;XL]]></column>
Это означает, что продукт имеет два размера, «L» и «XL». Мы разделим эти размеры с помощью специального PHP-кода, так что для этого продукта будут импортированы два размера («L» и «XL») вместо одного («L; XL»).
Пользовательский код PHP, который мы используем для вышеперечисленного:
[str_replace(";","|",{column[@name="size"]})]
По размерам мы также хотели бы импортировать / отображать продукты, которые имеют 2 размера или более, в зависимости от наличия. Например: будет импортирован товар со столбцом размера «XL; L» (доступны два размера), товар со столбцом размера «L» (доступен только один размер) не будет импортирован.
Как мы можем кодировать в PHP, что определенный продукт может быть импортирован, только если он имеет 2 или более размеров?
Лучший способ, но, вероятно, не самый простой, это использовать регулярные выражения.
Предполагая, что вам нужно «L» и «XL», чтобы быть значениями, которые вы собираетесь проверить
//$value is going to be the string you are checking for L and XL
//match is the array that is returned containing the values that matched
$value = "L|XL"; //this should match the data you are searching
$pattern = '/^(L\|XL|XL\|L)$/';
if( pregmatch($pattern, $value, $match) )
{
//code to import/display
}
Давайте разберем часть кода ‘/ ^ (L \ | XL | XL \ | L) $ /’
Это образец текста, который мы ищем. Строка начинается и заканчивается косой чертой, потому что это разделитель шаблона.
^ Привязывает наш поиск к началу строки текста, а $ привязывает конец шаблона к концу строки текста, которую мы ищем.
Вы можете вернуть значения, которые совпадают в массиве $ match. Для каждого набора (), который вы используете в шаблоне, вы можете вернуть соответствующий результат, используя $ match [1], $ match [2] и так далее. В нашем примере у нас будет только $ match [1].
\ Является escape-символом, который заставляет поиск воспринимать этот символ как текст, а не как специальный символ. (| используется для «ИЛИ»)
Поэтому мы говорим, что если у нас есть «XL | L» или «L | XL», то это совпадение и мы выполняем код в if.
Других решений пока нет …