【问题标题】:I'm making an imageboard and can't figure out link quoting我正在制作一个图像板,但无法弄清楚链接引用
【发布时间】:2016-05-26 15:25:10
【问题描述】:

我正在尝试做的事情相当简单,但我无法弄清楚。 我想扫描一段文本以查找任何看起来像 >>1234 的内容并替换为 <a href="1234">>>1234</a> 我想不出办法来做到这一点,尽管我可以做部分。编写一个正则表达式很容易找到>>1234 的实例,但它不能帮助我解决其他问题。这实际上可以通过两种方式完成,客户端按原样输入文本,然后使用 javascript 对其进行格式化,或者服务器每次处理文本并返回格式化版本。

这里是 github 页面:https://github.com/4tran/VIB

这是一个我尝试过的正则表达式示例:

<?php
function formatLink($post) {
    if(preg_match('/^\>\>([0-9]+)$/', $post)) {
      echo $post;
    }
}
formatLink(">>10"); // returns ">>10"
formatLink("spaghetti"); // returns ""
formatLink(">>10 spaghetti"); // returns ""
?>

任何帮助将不胜感激,我真的被困在这里了。

编辑:我想出了一些东西。 好的,所以对于任何想帮助的人,我现在对我想做的事情有了很好的参考。我在第一部分之前弄清楚了第二部分,第二部分是文本引用。代码如下:

$re = "/^^(>[a-zA-Z0-9_ ]*$)/mi";
$subst = "<p class=\"quote\">$1</p>";
foreach ($boards as $x) {
  $x = $db->real_escape_string($x);
  $db->real_query("SELECT * FROM posts_".$x." ORDER BY timestamp DESC LIMIT 1");
  $res = $db->use_result();
  while ($row = $res->fetch_assoc()) {
    $str = str_replace("\r\n", "\n", $row['content']);
    $str = str_replace("\r", "\n", $str);
    $content = preg_replace($re, $subst, $str);
    echo "<p style=\"font-size:110%;\">/$x/ - </p>" . "<p>" . nl2br($content) . "<a href=\"" . "$x/" . $row['op'] . "\"> [reply]</a></p><br/>";
  }
}

最终编辑:我现在也拿到了第一部分。

https://regex101.com/r/kC1bM7/3

【问题讨论】:

    标签: javascript php regex


    【解决方案1】:

    没有结束锚$,剩下的文字打破了它。量词将找到所有额外的数字。 (如果&gt;&gt;number 允许在字符串中的任何位置使用,您也可以取消前导锚^,在这两个示例中它都是前导的,所以我认为这是恒定的?)。

    试试:

    ^(>>\d+)
    

    演示:https://regex101.com/r/kC1bM7/2

    如果您在 HTML 中使用 &amp;gt;s,您还应该将 &amp;gt;s 编码为其实体,&amp;gt;

    PHP 用法我会使用类似的东西:

    preg_replace('/^>>(\d+)/', '&gt;&gt;$1', $string);
    

    也不是大于符号在正则表达式中没有特殊含义,因此不需要转义。

    【讨论】:

    • 感谢您的回复!除了替换位之外,这非常有效。在 a href 中,它应该等于没有大于符号的数字。有没有什么办法让它在一个部分做一个,另一个在另一个部分?
    • 你也可以regex101.com/r/kC1bM7/4。第二个 ^ 实际上并没有为你做任何事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-15
    • 1970-01-01
    相关资源
    最近更新 更多