2010-04-24 3 views
0

Je souhaite supprimer le type d'expressions suivant de mon script.php: suppression de mots via l'expression rationnelle

<a any text here>nothing or space here</a> 

Je peux le faire par trois fonctions, mais je pense qu'il y a un moyen plus court. pourriez-vous m'aider? merci à l'avance

+0

Tout comme sidenote, si vous cherchez à nettoyer HTML, vous êtes mieux avec un analyseur HTML. Voir cette fameuse réponse (/ question): http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – pinkgothic

Répondre

0

Taken from http://www.regular-expressions.info/php.html:

mixed preg_replace (mixed pattern, mixed replacement, mixed subject [, int limit]) retourne une chaîne avec tous les matches du motif regex dans la chaîne sujet remplacé par la chaîne de remplacement.

Au plus, des remplacements de limites sont effectués. Une différence essentielle est que tous les paramètres, sauf la limite, peuvent être des tableaux au lieu de chaînes.

Dans ce cas, preg_replace fait son travail plusieurs fois, en itérant simultanément sur les éléments des tableaux. Vous pouvez également utiliser des chaînes pour certains paramètres et des tableaux pour d'autres. Ensuite, la fonction parcourra les tableaux et utilisera les mêmes chaînes pour chaque itération. L'utilisation d'un tableau du modèle et du remplacement vous permet d'effectuer une séquence d'opérations de recherche et de remplacement sur une seule chaîne de sujet. L'utilisation d'un tableau pour la chaîne de sujet vous permet d'effectuer la même opération de recherche et de remplacement sur de nombreuses chaînes de sujet.

0
$text = '<a any text here>nothing or space here</a>'; 
$rep = ''; 
$pat = '|<a[^>]*>\S*</a>|'; 
echo preg_replace($pat,$rep,$text); 

EDIT: la mauvaise

$text = '<a any text here>nothing or space here</a>'; 
$rep = '<a>\1</a>'; 
$pat = '|<a[^>]*>([^<]*)</a>|'; 
echo preg_replace($pat,$rep,$text); 
+1

Je pense que l'OP veut enlever toute la chaîne, pas seulement la partie "n'importe quel texte ici" (la coloration rouge est juste le surligneur de syntaxe de SO étant un peu trop enthousiaste.) –

+0

ops, quel no ... je suis désolé, c'est mon 4ème jour et je suis toujours en train de tomber dans les pièges, essayant de faire de mon mieux. – Cesar

Questions connexes