J'ai besoin de supprimer toutes les adresses e-mail et les liens d'une chaîne et les remplacer par "[supprimé]" et je suis un peu perdu sur la façon de le faire.
Quelqu'un peut-il m'aider à ce sujet?
Merci.Comment supprimer les adresses e-mail et les liens d'une chaîne en PHP?
Répondre
Vous pouvez utiliser preg_replace pour le faire.
des e-mails:
$pattern = "/[^@\s]*@[^@\s]*\.[^@\s]*/";
$replacement = "[removed]";
preg_replace($pattern, $replacement, $string);
pour urls:
$pattern = "/[a-zA-Z]*[:\/\/]*[A-Za-z0-9\-_]+\.+[A-Za-z0-9\.\/%&=\?\-_]+/i";
$replacement = "[removed]";
preg_replace($pattern, $replacement, $string);
Ressources
entrée manuel PHP: http://php.net/manual/en/function.preg-replace.php
crédit où le crédit est dû: email regex prise de preg_match ma NPAGE et URL regex tirée de: http://www.weberdev.com/get_example-4227.html
Essayez ceci:
$patterns = array('<[\w.][email protected][\w.]+>', '<\w{3,6}:(?:(?://)|(?:\\\\))[^\s]+>');
$matches = array('[email removed]', '[link removed]');
$newString = preg_replace($patterns, $matches, $stringToBeMatched);
Note: vous pouvez passer un tableau de motifs et correspond à preg_replace au lieu de courir deux fois.
La réponse que j'allais upvote a été supprimée. Il est lié à un article du Journal Linux Validate an E-Mail Address with PHP, the Right Way qui indique ce qui ne va pas avec presque toutes les expressions rationnelles que quelqu'un propose.
La gamme de formes valides d'une adresse électronique est beaucoup plus large que ce que la plupart des gens pensent.
hmm juste essayé et supprime le texte entier que j'avais ... – JEagle
Pouvez-vous poster un petit échantillon du texte? – Josiah
C'était juste un texte aléatoire que j'avais. Rien de spécifique, juste une adresse email et quelques liens – JEagle