我试图从字符串中提取标记。我在那里的一部分,但我的模式中的逗号有问题。
以此示例输入字符串:
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"/>
)
)
很明显,我在模式中使用逗号的方式有问题,因为它省略了逗号。
请有人劝告。谢谢。
答案 0 :(得分:2)
在字符类后添加+
以匹配给定列表中的一个或多个字符。
$regex = '<that index="[0-9,]+"\/>';
preg_match_all ( '/' . $regex . '/i', $haystack, $thats );