提问人:John 提问时间:3/6/2021 最后编辑:TomJohn 更新时间:3/6/2021 访问量:52
在 PHP 正则表达式中引用报价
Escping quotes in PHP regex
问:
如何在以下字符串 ($x) 中仅找到电话号码 (1234827382)?
重要:我在 $x
(文本)上使用了 htmlspecialchars()
函数。如果不使用此函数,正则表达式将起作用。当我在正则表达式之前使用 htmlspecialchars()
时,我需要找到一个正则表达式解决方案。
font-size: 14px; color: #333;" >asd:</td> <td width="150" align="left" valign="top"
bgcolor="#f5f5f5" style="padding: 6px; border: 1px solid
#eaeaea;font-family: Arial, Helvetica, sans-serif; font-size: 14px; color:
#333;" >Tel:</td> <td align="left" valign="top" style="padding: 6px;
border: 1px solid #eaeaea;font-family: Arial, Helvetica, sans-serif;
font-size: 14px; color: #333;" ><a href="tel:1234827382">1234827382</a></td> </tr>
<tr> <td width="150" align="left"
我试过:
$p = '/href="tel:12.{20}/';
preg_match_all($p, $x, $matchestel);
print_r($matchestel);
如果我尝试用 \ 转义,那么它也不起作用:
$p = '/href=\"tel:12.{20}/';
如果文本不包含引号: <a href=tel:1234827382“ (而不是这个: <a href=”tel:1234827382“ ) 然后它找到,之后我可以从一开始就删除 href”。我知道这不是最好的解决方案。 我认为问题是我需要逃避“ from 模式。
答:
0赞
Petr Hejda
3/6/2021
#1
您需要使用反斜杠对引号进行转义。
就您而言/href=\"tel:12.{20}/
编辑:如果使用 ,引号将变为 ,因此您需要将正则表达式更新为htmlspecialchars($x)
"
"
/href="tel:12.{20}/
评论
0赞
John
3/6/2021
这是我首先尝试的,但没有奏效
0赞
Petr Hejda
3/6/2021
查看 sandbox.onlinephpfunctions.com/code/ 的输出... ...它在这里返回子字符串,所以我的猜测是问题出在代码的其他部分。
0赞
John
3/6/2021
是的,您的代码运行良好。我忘了提到我在$x上使用了htmlspecialchars sandbox.onlinephpfunctions.com/code/。
0赞
Petr Hejda
3/6/2021
@John 这是重要的信息。好的,更新了我的答案。
0赞
Carlos Condore
3/6/2021
#2
如果您的情况是数字没有任何特殊字符,您可以使用以下命令:
$p = '/\d{10}/';
preg_match_all($p, $x, $matchestel);
print_r($matchestel);
评论
()
'/href="tel:([0-9]+)"/'
htmlspecialchars