<?php
header('Content-Type: text/html; charset=utf-8');
$pattern='/[^0-9A-Za-z_]/';
$string='!$@!#%$#^##';
if(preg_match($pattern, $string,$match)){
echo '一致しました、結果は次のとおりです:' ;
var_dump($match);
}
else{
echo '一致しません';
}
?>
出力: 一致、結果is: array(1) { [0]=> string(1) "!" }
$string には [^0- の範囲内にないものがたくさんあることがわかりません。 9A-Za-z_] 「!」が 1 つだけ出力されるのはなぜですか?
preg_match() は、条件を満たすコンテンツが一度だけ一致した場合、すぐに戻り、後で条件を満たすコンテンツがあったとしても継続して一致しません。
preg_match() は条件を満たすコンテンツに 1 回だけ一致しますが、条件を満たすすべてのコンテンツに一致するようにするには、preg_match_all($pattern, $string, $arr) を使用します。 , $arr は、一致したすべてのコンテンツを保存します