PHP:使用正则表达式获取包含数据无效
PHP: use regex for get contain data not work
我的代码:
$data = '<div class="overlay">
<p>
<a href="/name/nm0136797/?ref_=nv_cel_dflt_2" id="nameAdClick">
<strong>Steve Carell</strong>
</a> »
<br>
#<strong>228</strong> on STARmeter
</p>
</div>'
正则表达式:
<a href="/name/.*/\?ref_=nv_cel_dflt_2".*>(.*)<\/a>
但不是return任何东西
此代码有时有效,有时无效!
Link 测试:https://regex101.com/r/snYqoC/1
正如 regex101.com 在您输入 link 您发布的报告错误时所说的那样,发生灾难性错误 see here(由于检查“.* " 在 "name/" 文字之后可能会捕获每个符号并因此使其失败)。
我已尝试通过将正则表达式的字符定义为仅匹配名称的字母 A 到 z 和数字 0 到 9 来解决此问题,并在文本中找到一个匹配项(如果有更多或需要其他一些特定的字符,我建议将它们指定在同一组中。
正则表达式是这样的:
<a href="/name/([A-Z]|[a-z]|[0-9])*/\?ref_=nv_cel_dflt_2".*>(.*)<\/a>
link为测试结果here
希望对你有用
您可以使用否定字符 类 而不是 "any character" 点来匹配。
~<a href="/name/[^/]*/\?ref_=nv_cel_dflt_2"[^>]*>\s*(.*?)\s*</a>~is
我会尽快添加 DomDocument / Xpath 替代方案。
我的代码:
$data = '<div class="overlay">
<p>
<a href="/name/nm0136797/?ref_=nv_cel_dflt_2" id="nameAdClick">
<strong>Steve Carell</strong>
</a> »
<br>
#<strong>228</strong> on STARmeter
</p>
</div>'
正则表达式:
<a href="/name/.*/\?ref_=nv_cel_dflt_2".*>(.*)<\/a>
但不是return任何东西
此代码有时有效,有时无效!
Link 测试:https://regex101.com/r/snYqoC/1
正如 regex101.com 在您输入 link 您发布的报告错误时所说的那样,发生灾难性错误 see here(由于检查“.* " 在 "name/" 文字之后可能会捕获每个符号并因此使其失败)。
我已尝试通过将正则表达式的字符定义为仅匹配名称的字母 A 到 z 和数字 0 到 9 来解决此问题,并在文本中找到一个匹配项(如果有更多或需要其他一些特定的字符,我建议将它们指定在同一组中。
正则表达式是这样的:
<a href="/name/([A-Z]|[a-z]|[0-9])*/\?ref_=nv_cel_dflt_2".*>(.*)<\/a>
link为测试结果here
希望对你有用
您可以使用否定字符 类 而不是 "any character" 点来匹配。
~<a href="/name/[^/]*/\?ref_=nv_cel_dflt_2"[^>]*>\s*(.*?)\s*</a>~is
我会尽快添加 DomDocument / Xpath 替代方案。