在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中遇到小于(&lt;)的操作符preg_match_all 的全部内容, 来源链接: utcz.com/qa/265171.html

回到顶部