Maison  >  Article  >  développement back-end  >  Concernant le problème de passage des paramètres de la fonction de rappel php preg_replace_callback

Concernant le problème de passage des paramètres de la fonction de rappel php preg_replace_callback

藏色散人
藏色散人avant
2020-12-10 15:00:194523parcourir

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&#39;t read stdin");
while (!feof($fp)) {
    $line = fgets($fp);
    $line = preg_replace_callback(
        &#39;|<p>\s*\w|&#39;,
        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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer