Pun*_*jar 1 php regex preg-match-all
我正在尝试检索所有匹配项,但我只收到一个
这是我的字符串
$html = '<p> This is my Home Page.</p><p><span style="line-height: 1.42857;">{{ type="slider" }} </span></p><p> </p>';
Run Code Online (Sandbox Code Playgroud)
如果你看到 string contains {{ type="slider" }} ,现在如果我只写一次这个字符串,我就得到了预期的结果,但是如果我在 html 中多次写它,就像 {{ type="slider" }} {{ type="banned" }} {{ type="testimonial" }}
$html = '<p> This is my Home Page.</p><p><span style="line-height: 1.42857;">{{ type="slider" }} {{ type="banner" }} {{ type="testimonial" }} </span></p><p> </p>';
Run Code Online (Sandbox Code Playgroud)
并尝试获取我的字符串中的值,{{ type=" ???? " }}它显示奇怪的结果
我正在使用下面的代码。
preg_match_all('/{{ type=\"(.+)\" }}/', $html, $matches, PREG_SET_ORDER);
echo "<pre>";
print_r($matches);
foreach ($matches as $val) {
echo "matched: ". $val[0] . "<br/>";
echo "My Value" . $val[1] . "<br/>";
}
Run Code Online (Sandbox Code Playgroud)
当前结果:
Array
(
[0] => Array
(
[0] => {{ type="slider" }} {{ type="banner" }} {{ type="testimonial" }}
[1] => slider" }} {{ type="banner" }} {{ type="testimonial
)
)
matched: {{ type="slider" }} {{ type="banner" }} {{ type="testimonial" }}
My Value : slider" }} {{ type="banner" }} {{ type="testimonial
Run Code Online (Sandbox Code Playgroud)
我期待数组中的结果,其值写在{{ type="和之间" }}
只有{{ type="slider" }}我得到了这个完美的结果。
Array
(
[0] => Array
(
[0] => {{ type="slider" }}
[1] => slider
)
)
matched: {{ type="slider" }}
My Value : slider
Run Code Online (Sandbox Code Playgroud)
任何想法 ?
对不起,我的英语不好。
您需要通过添加以下任一方式使正则表达式匹配非贪婪?:
preg_match_all('/{{ type=\"(.+?)\" }}/', $html, $matches, PREG_SET_ORDER);
Run Code Online (Sandbox Code Playgroud)
或U修饰符:
preg_match_all('/{{ type=\"(.+)\" }}/U', $html, $matches, PREG_SET_ORDER);
Run Code Online (Sandbox Code Playgroud)