0

产品的尺寸可以有以下列:

<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 个或更多尺寸时才能导入?

4

1 回答 1

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]。

\ 是一个转义字符,它会导致搜索将该字符视为文本而不是特殊字符。(| 用于“或”)

所以我们说如果我们有 'XL|L' 或 'L|XL' 它是一个匹配并执行 if 中的代码。

于 2017-08-30T18:14:48.220 回答