繁体   English   中英

正则表达式以格式化某些文本行

[英]Regular Expression to format certain lines of text

我正在尝试通过使它看起来更好并且更像电子邮件来改进我的站点内个人消息系统。 我目前在每行要回复的文本之前添加>,但是我还想向以“>”开头的行添加诸如字体颜色之类的格式,且不带引号。 我不知道我怎么会收线了使用正则表达式。 要打开它,我想我应该做以下事情?

$new_text = preg_replace("\> \is", "<font color=\"grey\">> ", $text);
preg_replace("/^(>.*)$/im", "<span style=\"color: red;\">\\1</span>", $reply);
ereg_replace('^>(.*)', '<span class="quoted">&gt;\\1</span>', $content);
preg_replace('/(\n>[^\n]*)+/','<span class="reply">$1</span>', $message);

诸如此类的内容将用您可以设置样式的引用括起来。

除了已经发布的良好答案之外,您可能还想先将捕获的文本转义为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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM