2011-01-20 3 views
6

Je fait un preg_replace:php regex ou | opérateur

$pattern = '/<ul>/'; 
$replacement = ""; 
$string = "hello <ul> how are you doing </ul>"; 
echo preg_replace($pattern, $replacement, $string); 

qui remplacera mon <ul> avec "" mais jaimerais remplacer tout ce qui est un <ul> ou </ul>, je ne reçois pas comment utiliser le caractère | (ou) si .

J'essaie comme ça, mais il ne fonctionne pas correctement:

$pattern = '/<ul>|</ul>/'; 
$replacement = ""; 
$string = "hello <ul> how are you doing </ul>"; 
echo preg_replace($pattern, $replacement, $string); 

Toute aide serait sûrement apprécié

Merci, Bryan

+3

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 –

Répondre

13

Vous devrez peut-être échapper à la barre oblique/ul comme ceci:

$pattern = '/<ul>|<\/ul>/'; 

ou le faire, ne sais pas si il va travailler:

$pattern = '/<\/?ul>/'; 

('? le moyen zéro ou un des caractères précédents, ce qui est «/» dans ce cas.)

+1

Merci beaucoup, $ pattern = «/<\/?ul>/'; –

+5

Une autre option est d'utiliser un délimiteur regex différent: ''~ ~' –

+1

<\/?ul> est un bon, et enfin résolu un bug regex que j'ai eu affaire. Merci pour le conseil! – Yohn

1

Vous devez échapper à la barre oblique inverse.

/<ul>|<\/ul>/