【问题标题】:Regular expression to display >quotes in style正则表达式以样式显示>引号
【发布时间】:2021-05-17 22:53:47
【问题描述】:

我的数据库中有一些带有引号的文本。它们的原始形式如下所示:

&gt;Some quote <br />
Some simple text<br />
<br>
&gt; another quote with random <b>tags</b> and <a href=>links</a> in it

我想要做的是让这些引号看起来与其他文本有些不同——无论是在它们进入数据库之前的 php 部分中,还是在它们显示在页面上时(对我来说并不重要,无论哪个可行)。

问题是几乎没有一致性:可能有额外的空格、其他结束标签等。每个字符串可能有几个,连续或不连续。唯一相同的是行首和行尾的&amp;gt;(不是&gt; - 它是如何保存在数据库中的)或引号末尾的字符串结尾。

我可以自己管理的最接近的事情如下,它涵盖了一些引用 - 但不是那些在最后的引用,有时它会被随机标签打断。

preg_replace("/\&gt\;([^*]*)<br/", "<mark class=\'quote\'>$1</mark><br", $string);

有什么办法解决吗?提前致谢!

【问题讨论】:

    标签: php regex


    【解决方案1】:

    您需要使用? 使量词不贪心,并使用更改来查找&lt;br 或字符串的结尾。

    &gt;([^*]*?)(<br|$)
    

    替换应该是&lt;mark class=\'quote\'&gt;$1&lt;/mark&gt;$2,所以你把&lt;br或者结束行放回去。

    https://regex101.com/r/j8Itii/1/

    【讨论】:

    • 看起来工作起来几乎完美无缺!实际上,行的末尾有一个未闭合的
      preg_replace("/&gt;([^*]*?)(<br|$)/", '<mark class="quote">$1</mark><br',$summary);
    • 你能发布一个包含引用问题的字符串吗?
    • 抱歉回复晚了,好像我在复制第二个版本时搞砸了一些东西 - 现在我再次尝试它似乎确实有效。 preg_replace("/&amp;gt;([^*]*?)(&lt;br|$)/", '&lt;mark class="quote"&gt;$1&lt;/mark&gt;$2',$summary); - 最后没有烦人的
    猜你喜欢
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    • 2015-03-24
    • 2010-12-01
    • 2010-09-18
    • 2011-12-18
    • 2015-12-07
    相关资源
    最近更新 更多