Если вам нужен только текст после имени пользователя / даты, вы можете просто удалить все до первого
, при условии, что форматирование соответствует.
$text = preg_replace("/^.*?<br(\s\/)?>/si", "", $string);
Это заменит все до и включая первую
или
, без учета регистра, на пустую строку, оставляя вас только с текстом. . *? в начале это не жадное совпадение, означающее, что оно будет захватывать как можно меньше. Другими словами, он не пройдет через первый перерыв.
Затем вы можете выполнить следующее:
$text = preg_replace("/^.*?<br(?:\s\/)?>(.*?)(<br(\s\/)?>)+$/si", "$1", $string);
Это должно удалить все завершающие пробелы и
/
теги.
Вы также можете сделать все это с помощью одного preg_replace:
$text = preg_replace("/.*?<br(?:\s\/)?>(.*)(?:<br(?:\s\/)?>\s*)+$/si", "$1", $string);
Я сделал все () захваты (? :) без захвата, кроме одного, содержащего текст.
(я не использую php регулярно, поэтому я предполагаю, что регулярное выражение, совместимое с perl, является тем, о чем говорится).