XML — Как мы можем определить в PHP, что определенный продукт может быть импортирован, только если он имеет 2 или более размеров? (WP All Import)

Продукт может иметь следующий столбец для размера:

<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 или более размеров?

0

Решение

Лучший способ, но, вероятно, не самый простой, это использовать регулярные выражения.
Предполагая, что вам нужно «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.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]