用逗号表示PHP中的正则表达式

时间:2014-11-07 17:28:27

标签: php regex

我试图从字符串中提取标记。我在那里的一部分,但我的模式中的逗号有问题。

以此示例输入字符串:

 Lorem ipsum dolor sit amet, <that index="8"/>consectetur adipiscing elit. <that index="4"/>Sed metus sem, facilisis id nibh eget, <that index="6,2"/>accumsan tristique nisl. Proin iaculis dignissim tincidunt.I said : <that index="9,1"/>

我希望提取包含属性&#39; index&#39;。

的标签

我需要两种变体,即属性中没有逗号和逗号的模式。

如果我这样做:

$haystack = 'Lorem ipsum dolor sit amet, <that index="8"/>consectetur adipiscing elit. <that index="4"/>Sed metus sem, facilisis id nibh eget, <that index="6,2"/>accumsan tristique nisl. Proin iaculis dignissim tincidunt.I said : <that index="9,1"/>';
$regex = '<that index="[0-9,]"\/>';
preg_match_all ( '/' . $regex . '/i', $haystack, $thats );

数组$ thats只包含这个:

(
[0] => Array
    (
        [0] => <that index="8"/>
        [1] => <that index="4"/>
    )

)

很明显,我在模式中使用逗号的方式有问题,因为它省略了逗号。

请有人劝告。谢谢。

1 个答案:

答案 0 :(得分:2)

在字符类后添加+以匹配给定列表中的一个或多个字符。

$regex = '<that index="[0-9,]+"\/>';
preg_match_all ( '/' . $regex . '/i', $haystack, $thats );

DEMO