В дополнение к уже опубликованным хорошим ответам, вы можете захотеть избежать захваченного текста, прежде чем рассматривать его как HTML. При простой замене некоторые символы в цитируемом тексте (в частности, «<», «>» и «&») сделают сгенерированный HTML недействительным. (Я предполагаю, что это еще не сбежало, или вам нужно будет соответствовать ">" вместо ">".)
Чтобы убедиться, что замена приводит к действительному HTML, вы можете сделать что-то вроде этого:
function quote_markup($matches) {
$quote = htmlspecialchars($matches[1]);
return "<span style=\"color: red;\">$quote</span>",
}
preg_replace_callback("/^(>.*)$/im", 'quote_markup', $reply);