Удалить один лишний разрыв строки в тексте в php

1

Мой вопрос прямо противоположный тому, который я добавил вчера вечером. Необходимо удалить последний тег br.

Входные данные :

Test1 is here<br><br>Now comes Test2<br><br>Then test 3<br><br><br>Thats it.

Вывод

 Test1 is here<br>Now comes Test2<br>Then test 3<br><br>Thats it.

Моя попытка:

preg_replace("[((?:<br>)+)]","",$posttext)

Он удаляет все разрывы.

  • 0
    Вывод «Тест1» находится здесь. Теперь идет «Тест2», затем «Тест 3». <br> Вот и все. или Test1 здесь <br> Теперь идет Test2 <br> Тогда тест 3 <br> Вот и все.
  • 0
    @faressoft o / p необходимо, чтобы Test1 был здесь <br> Теперь идет Test2 <br> Тогда тестируйте 3 <br> <br> Вот и все.
Показать ещё 1 комментарий
Теги:
preg-replace

2 ответа

2
Лучший ответ

Вы можете заменить

<br><br>(?!<br)

к <br>

preg_replace('/<br><br>(?!<br)/', "<br>", $posttext);

Опережения помешает соответствовать больше <br>

См. Демонстрацию в regex101

  • 0
    Это сработало. Спасибо
  • 0
    Добро пожаловать @newCodex!
Показать ещё 1 комментарий
0

Присмотритесь к этому хахахе

Если замена Preg не работает...

// cuts off one <br> as high as whatever $i is at

$string = "Test1 is here<br><br>Now comes Test2<br><br>Then test 3<br><br><br>Thats it.";
$i = 10;

while($i > 0)
{
  $ii = 1;
  $brake = "<br>";
  $replace = "";
  while($ii < $i)
  {
   $brake .= "<br>";
   $replace .= "<br>";
   $ii++;
  }
$string = str_replace($brake,$replace,$string);
$i--; 
} 

 echo $string; // Test1 is here<br>Now comes Test2<br>Then test 3<br><br>Thats it.

PS: Если для этой цели нет предварительной замены, ее можно использовать, хотя и очень неэффективно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню