gpt4 book ai didi

php 删除论坛中除最后引用的回复之外的所有回复

转载 作者:可可西里 更新时间:2023-11-01 13:32:08 24 4
gpt4 key购买 nike

我正在创建自己的论坛,并坚持从回复中删除多个引用的文本。我将尝试用示例来解释这一点。

假设我们收到第一条消息Hello A

然后有人引用这个,我们在数据库中得到:[q]Hello A[/q] Hello you too

如果第三个人引用第二个回复,它会变得更难看,并且会像这样:[q] [q]Hello A[/q] Hello you too[/q] Hello both.

我想要做的是从引用的文本中删除除最后引用的回复之外的所有回复。所以在这种情况下,我想在第三个回复中去掉第三个引号中的 [q]Hello A[/q]

如何让它在无限制的 [q] 上工作?

编辑:如何替换主 [q] 中的多个 [q]something[/q],哪个是第一个? -> [q] [q]A[/q] B[/q] -> 变成 -> [q]B[/q] 或者 [q][q][q ]A[/q]B[/q]C[/q] -> 变成 -> [q]C[/q]

最佳答案

如果我没理解错,那么你可能想要这样的东西:

$firstTag = strpos($content, "[q]");
$lastTag = strrpos($content, "[/q]", 0);

$secondTag = strpos($content, "[q]", $firstTag + strlen("[q]"));
$secondLastTag = strrpos(substr($content, 0, $lastTag), "[/q]");

$content = substr_replace($content, "", $secondTag, $secondLastTag - $secondTag + strlen("[q]") + 1);

对于任何错误,我深表歉意,我没有方便测试的 PHP 解释器,我使用它已经大约 9 个月了,所以我有点生疏了。

实际上,我们尝试做的是首先找到第一个开始标记在字符串中的位置,然后找到最后一个结束标记的位置。一旦我们有了这些位置,我们就可以使用它们作为偏移量来开始我们的搜索以找到第二个开始标签和倒数第二个结束标签。一旦我们知道它们的位置,我们就会使用 substr_replace 将内容字符串中从第二个开始标记开始到倒数第二个结束标记的所有文本替换为空白字符串。

所以为了说明,如果我们有:

[q][q]内层3[q]内层2[/q]内层1[/q]外层[/q]

我们找到第二个 [q] 标签,倒数第二个 [/q] 标签,并将它们和它们之间的所有内容替换为空字符串并得到:

[q]外层[/q]

这就是您要找的吗?

关于php 删除论坛中除最后引用的回复之外的所有回复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15474489/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com