<br /> <br /> <br /> <br /> <br /> <br />
ancak
Ben değiştirmek istiyorum
<br /> fourth with <hr />
Ve bu çıkış
<br /> <br /> <br /> <hr /> <br /> <br />
Lütfen bana yardımcı olun
Belki de böyle bir şey ne istediğiniz:
<?php
$text = <<<EOT
<br /> 1 <br /> 2 <br /> 3 <br /> 4 <br /> 5 <br /> 6
<br /> 7 <br /> 8 <br /> 9 <br /> 10 <br /> 11 <br /> 12
<br /> 13 <br /> 14 <br /> 15 <br /> 16 <br /> 17 <br /> 18
EOT;
$tag = '<br \\/>';
$content = '[^<]*';
print preg_replace("/($content(?:$tag$content){3})$tag/", '$1<BREAK! />', $text);
?>
Çıktı (as seen on ideone.com):
<br /> 1 <br /> 2 <br /> 3 <BREAK! /> 4 <br /> 5 <br /> 6
<br /> 7 <BREAK! /> 8 <br /> 9 <br /> 10 <br /> 11 <BREAK! /> 12
<br /> 13 <br /> 14 <br /> 15 <BREAK! /> 16 <br /> 17 <br /> 18
Yani bu bir ağrı olduğunu ve gerçekten bunun için regex kullanarak gerektiğini söyledi.
Eğer sadece bir değiştirme yapmak isterseniz, size limit
bağımsız değişkeni ayarlayabilirsiniz preg_replace
a>:
preg_replace("/($content(?:$tag$content){3})$tag/", '$1<BREAK! />', $text, 1);
^^limit
Bu yalnızca verilen durum için çalışacaktır:
preg_replace("#<br /> 4#", "<hr /> 4", $str);
Eğer genel bir çözüm arıyorsanız, RegEx is not the best tool Bunun için. HTML / XML ayrıştırıcı kullanın.