[英]PHP ungreedy doen't match anything
有这样的网站:
<html ... data-props="{some_json_data_with_html_entities}" ...>
我正在尝试使用preg_match()
获取该JSON
,但是...
使用时:
'~data-props="(.*)"~'
在那之后我得到了所有的东西...我的意思是该行中还有更多包含""
,因此它捕获了所有...
但是使用时:
'~data-props="(.*)"~U'
我什么也没得到...结果为空数组。
到底是怎么回事? 如何正确匹配?
您可能应该改用JSON
解析器,但是如果您想知道为什么它不起作用(特别是示例2),那是个谜。 您可能想匹配lazy
,当不使用?
时, U
修饰符可以使它变为lazy
?
量词。 目前尚不清楚您的实际PHP代码是什么样子; 您的第二个模式应该已经根据输入字符串进行了匹配。
data-props="(.+?)"
+? [惰性]匹配在1到∞倍之间,越少越好,根据需要扩展。
https://www.regex101.com/r/cL9xU9/1
这是一个使用第二种模式的preg_match
快速示例,看似很好:
$str = '<html ... data-props="{some_json_data_with_html_entities}" ...
"{some__moar_json_data_with_html_entities}">';
preg_match( '~data-props="(.*)"~U', $str, $res) ;
print_r($res[1]);
结果:
{some_json_data_with_html_entities}
如果不匹配,那么您显然已经在字符串中得到了更多的信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.