2017-09-03 1 views
1

Je suis en train de supprimer le contenu entre () en utilisant l'expression ci-dessous reg en PHP et mon code est contenu dans la suppression des balises HTML aussi. Comment puis-je venir ça?Application expression régulière pour le contenu accolades html en dehors

entrée - Une explication (poème) est un ensemble de <a href="/wiki/Statement_(logic)" title="Statement (logic)">statements</a> construit habituellement

attendu Output- Une explication est un ensemble de <a href="/wiki/Statement_(logic)" title="Statement (logic)">statements</a> construit habituellement

sortie I got- Une explication est un ensemble de <a href="/wiki/Statement_" title="Statement ">statements</a> construit habituellement

Mon code est - preg_replace('/\(([^()]*+|(?R))*\)\s*/', ' ', $string);

+1

Indiquez votre code. Plus précisément votre entrée, la sortie que vous avez et la sortie souhaitée. –

+0

arrêter de casser les modifications !! –

+0

Salut Robert, j'ai modifié ma question. –

Répondre

0

Cette méthode suppose que vous cherchez seulement à disqualifier <a> Tags du processus de suppression de sous-chaîne entre parenthèses.

Motif: ~<a.*?</a>(*SKIP)(*FAIL)| *\([^()]*\) *~ Remplacer: Regex Demo

Si votre $string peut contenir de/toutes les balises HTML, vous devrez relâcher le modèle un peu.

Motif: ~<(\S+).*?</\1>(*SKIP)(*FAIL)| *\([^()]*\) *~ Remplacer: Regex Demo

* Avis dans mes motifs que je suis correspondant (un espace littéral) au lieu de \s est de préserver une nouvelles lignes et de maintenir les cordes structure destinée.

(*SKIP)(*FAIL) fonctionne de disqualifier indésirables apparié à l'avance.