在php中遇到小于(<)的操作符preg_match_all
我试图解析一个查询字符串,并遇到了一些我无法弄清楚的东西。在php中遇到小于(<)的操作符preg_match_all
试图匹配一个字符串,该字符串可以包含<或>,但是只有当字符串包含<时,才会看到一些奇怪的输出。
例子:
<?php $gt = 'wt>f';
preg_match_all("/([A-Za-z<>]+)/", $gt, $gtmatches);
?>
<pre><?php print_r($gtmatches); ?></pre>
返回预期:
Array (
[0] => Array
(
[0] => wt>f
)
[1] => Array
(
[0] => wt>f
)
)
但只需更换该>与<,给人很奇怪输出:
代码:
<?php $lt = 'wt<f';
preg_match_all("/([A-Za-z<>]+)/", $lt, $ltmatches);
?>
<pre><?php print_r($ltmatches); ?></pre>
输出:
Array (
[0] => Array
(
[0] => wt Array
(
[0] => wt
我测试过这对PHP 5.6.24/IIS 10,并在本地上的PHP 32年6月5日/阿帕奇2.4.29。
解决由于iainn(该死,你们是快!)
我的浏览器被解释<作为标签的开始,望着源,一切都很好。
回答:
你试图查看在浏览器中print_r
输出,它的解释<
作为HTML标签,直到=>
结尾几行后。如果您查看页面源代码而不是渲染输出,则会看到您期待的结果。
正如在评论中提到的,正则表达式本身工作正常。
回答:
<和>是特殊字符。放置一个反斜杠他们每个人的面前,或者它在传递前使用此功能上线 - http://php.net/manual/en/function.preg-quote.php
preg_match_all("/([A-Za-z\<\>]+)/", $gt, $gtmatches);
以上是 在php中遇到小于(<)的操作符preg_match_all 的全部内容, 来源链接: utcz.com/qa/265171.html