网站上有类似的内容:
<html ... data-props="{some_json_data_with_html_entities}" ...>
我正在尝试将JSON
与preg_match()
联系起来,但是......
使用时:
'~data-props="(.*)"~'
我之后得到了所有的东西...我的意思是该行中有更多的东西包含{{1}},所以它抓住了所有的东西......
但使用时:
""
我什么也没得到......结果是空数组。
发生了什么事?我该如何正确匹配?
答案 0 :(得分:0)
您应该使用JSON
解析器,但如果您想知道它为什么不起作用(特别是示例2),那就太神秘了。您希望匹配lazy
,U
修饰符在没有?
量词的情况下使用data-props="(.+?)"
。目前还不清楚你的实际PHP代码是什么样的;你的第二个模式应该根据输入字符串进行匹配。
preg_match
+? [懒惰]匹配1到∞次,尽可能少, 根据需要扩大。
https://www.regex101.com/r/cL9xU9/1
以下是使用您的第二种模式$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}
<强>结果:强>
if (Auth::check()) {
$user_id = Auth::user()->getKey();
}
如果它不匹配,那么你显然在我们获得的字符串中得到了更多。