Recommandé : "Tutoriel vidéo PHP"
preg_replace_callback
La fonction de cette fonction est d'effectuer une recherche d'expression régulière et d'utiliser un callback Remplacer
preg_replace_callback ( mixed $pattern , callable $callback , mixed $subject [, int $limit = -1 [, int &$count ]] ) : mixed
Description du paramètre
modèle
Le modèle à rechercher, qui peut être une chaîne ou une chaîne tableau .
callback
Une fonction de rappel qui est appelée chaque fois qu'un remplacement est nécessaire. Les paramètres obtenus par la fonction lorsqu'elle est appelée correspondent à partir du. résultat du sujet. La fonction de rappel renvoie la chaîne qui participe réellement au remplacement. Voici la signature de la fonction de rappel :
handler ( array $matches ): string
La fonction de rappel est souvent nécessaire et n'est que utilisé pour preg_replace_callback() un appel local. Dans ce cas, vous pouvez utiliser une fonction anonyme pour définir une fonction anonyme comme rappel lorsque preg_replace_callback() est appelé. De cette façon, vous conservez toutes les informations d'appel au même endroit et ne polluez pas l'espace de noms de la fonction avec un nom de fonction de rappel qui n'est utilisé nulle part ailleurs.
Exemple n°1 preg_replace_callback() et fonction anonyme
<?php /* 一个unix样式的命令行过滤器,用于将段落开始部分的大写字母转换为小写。 */ $fp = fopen("php://stdin", "r") or die("can't read stdin"); while (!feof($fp)) { $line = fgets($fp); $line = preg_replace_callback( '|<p>\s*\w|', function ($matches) { return strtolower($matches[0]); }, $line ); echo $line; } fclose($fp); ?>
subject
La chaîne ou le caractère cible à rechercher et à remplacer tableau de chaînes.
limite
Le nombre maximum de substitutions pour chaque chaîne de sujet pour chaque modèle. La valeur par défaut est -1 (aucune limite).
count
Si elle est spécifiée, cette variable sera remplie avec le nombre de fois où le remplacement a été effectué.
Comment passer des paramètres
Par défaut, cette fonction de rappel ne recevra que le paramètre correspondant $matches. Si nous voulons passer plus de paramètres, nous pouvons utiliser des tactiques de détours. , comme le dit le proverbe, tous les chemins mènent à Rome, à condition que l'on puisse accéder aux paramètres à transmettre dans la fonction anonyme. Nous avons donc deux options.
1. Utilisez des variables globales
$param1 = "test"; preg_replace_callback($pregRule, function ($match) { global $param1; return $match[1] . $param1 . $match[3]; }
2. Utilisez des classes de chargement orientées objet
class Scrapy{ private $param1 = "test"; public function info(){ preg_replace_callback($pregRule, function ($match) { return $match[1] . $this->param1 . $match[3]; } } }
Grâce aux deux méthodes ci-dessus, nous pouvons appeler la fonction de rappel à laquelle nous voulons transmettre l'entrée. paramètres.
Résumé
Il y a toujours plus de solutions que de problèmes. Si vous rencontrez un problème qui ne peut pas être résolu, si vous changez votre façon de penser, vous pouvez avoir un avenir radieux.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!