<?php
header('Content-Type: text/html; charset=utf-8');
$pattern='/[^0-9A-Za-z_]/';
$string='! $@!#%$#^##';
if(preg_match($pattern, $string,$match)){
echo 'Correspondance, le résultat est :';
var_dump($match);
}
else {
echo 'No match';
}
?>
Sortie : correspondant, le résultat est : array(1) { [0]=> string(1) "!" $ Il existe de nombreuses chaînes qui ne sont pas dans la plage de [^0-9A-Za-z_], pourquoi un seul '!' est affiché ?
preg_match() ne correspond qu'une seule fois. S'il correspond à un contenu qui remplit les conditions, il reviendra immédiatement et ne continuera pas à correspondre, même s'il existe d'autres contenus qui remplissent les conditions plus tard.
preg_match() ne correspond qu'une seule fois. S'il correspond au contenu qui remplit les conditions, il ne correspondra plus. Si vous souhaitez faire correspondre tout le contenu qui remplit les conditions, vous pouvez utiliser preg_match_all($pattern, $string, $arr) , $arr enregistrera le contenu correspondant. Tous les contenus éligibles