私はクエリ文字列を解析しようとしていて、わかりにくいものに遭遇しました。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 5.6.32/2.4.29のApacheにしました。
解決おかげでiainnする(気君たちは速いです!)
私のブラウザはソースを見て、タグの開始として<を解釈して、すべてが正常です。
それは私のために働いています: - https://eval.in/926067とhttps://eval.in/926069(2つのバージョン) –