我试图解析一个查询字符串,并遇到了一些我无法弄清楚的东西。在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(该死,你们是快!)
我的浏览器被解释<作为标签的开始,望着源,一切都很好。
它适用于我: - https://eval.in/926067和https://eval.in/926069(两个版本) –