繁体   English   中英

PHP不满意没有任何内容

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM