Вот такое регулярное выражение ищет
за которым нет
с любым количеством пробельных симвловом вежду ними
1 |
(?!<\/li>\s*?(<\/ul>|<li>))(<\/li>) |
Вот такой текст скармливаю.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<li>55555)</li> </ul> <br/><ul><li>6666</li> <li>77777</li> </ul> <ul> <li>55555)</li> <br/> <ul> <li>6666</li> <li>77777</li> <br/><ul> <li>6666</li> <li>77777</li> <br/> |
вот такой результат
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<li>55555)</li> </ul> <br/><ul><li>6666</li> <li>77777</li> </ul> <ul> <li>55555)</li></ul> <br/> <ul> <li>6666</li> <li>77777</li></ul> <br/><ul> <li>6666</li> <li>77777</li></ul> <br/> |
при замене на
1 |
</li></ul> |
полный код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
$re = '/(?!<\/li>\s*?(<\/ul>|<li>))(<\/li>)/m'; $str = '<li>55555)</li> </ul> <br/><ul><li>6666</li> <li>77777</li> </ul> <ul> <li>55555)</li> <br/> <ul> <li>6666</li> <li>77777</li> <br/><ul> <li>6666</li> <li>77777</li> <br/>'; $subst = '</li></ul>'; $result = preg_replace($re, $subst, $str); echo "The result of the substitution is ".$result; |