Bonjour,
Il y a plusieurs années j'ai trouvé une fonction PHP sur Internet qui est très utile, qui permet par exemple de détecter un mot dans une chaine avec ou sans astérisques et qui permet donc de bannir ce mot détecté.
Voici le code:
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 function match_string($pattern, $str) { $pattern = preg_replace('/([^*])/e', 'preg_quote("$1", "/")', $pattern); $pattern = str_replace('*', '.*', $pattern); return (bool) preg_match('/^' . $pattern . '$/i', $str); } // (ne fonctionne pas sur PHP 7 ? et il fonctionne sur PHP 5.6 avec des millions d'alertes dans error_log) /* Example: match_string("*world*","hello world") // returns true match_string("world*","hello world") // returns false match_string("*world","hello world") // returns true match_string("world*","hello world") // returns false match_string("*ello*w*","hello world") // returns true match_string("*w*o*r*l*d*","hello world") // returns true */
Voici les millions de lignes générés dans "error_log" avec PHP 5.6:
Code txt : Sélectionner tout - Visualiser dans une fenêtre à part [20-Jun-2018 00:54:56 Europe/Paris] PHP Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in ..... on line 4
Est-ce que quelqu'un sait comment arranger la ligne N°4 "preg_replace" pour qu'elle soit compatible à la fois sur PHP 5.6 et PHP 7 ?
Merci d'avance.
Salutations.
PS: Le code PHP il vient de : https://stackoverflow.com/a/5622211 (en 2011)
Partager