PHP - 精确删除模块化字符串


PHP - Precise removal of a modular string

我有一个关于php字符串的问题。

有这个字符串,其中我有一个带有 bb 代码的部分。喜欢这个:

 Mixed all type of things
and edited it
cool stuffasdasdasd
[img]http://google.com/image.jpg[/img]
- [url=http://google.com/]Google one[/url]
- [url=http://google.com/]Google two[/url]
- [url=http://google.com/]Google three[/url]
some more cool stuff

现在我想删除带有 [img] 标签的块,直到带有 url 的列表的最后一个。

如果这是文件的结尾,我已经使用 strpos 完成了此操作并删除了最后一位,但现在 conent 可以在该字段之后的这个字符串中,并且列表可以是 1 个链接或 500 个链接,或者也可能根本没有列表。如果根本没有列表,我可以再次使用 strpos 处理这种情况进行检查,但是我应该使用什么来仅删除列表及其标题图像,仅删除或多或少?此外,我不仅可以查找最后一个 bb 代码标签,因为在该部分之后可以使用其他 bb 代码,因此它必须严格使用列表的最后一位。例如,如果底部的类似条目和列表有任何划分,则它不是列表的一部分,也不应是删除的字符串部分的结束位置......

任何帮助将不胜感激!

谢谢

问候阿肯索

如果你的字符串被称为 $myOldString ,那么:

    $myNewString = preg_replace($myRegexPattern,"",$myOldString);

其中$myRegexPattern是您希望从旧字符串中删除的模式。

然后$myNewString将是没有 bb 代码的新字符串。

示例代码:

$myOldString = "Mixed all type of things
and edited it
cool stuffasdasdasd
[img]http://google.com/image.jpg[/img]
- [url=http://google.com/]Google one[/url]
- [url=http://google.com/]Google two[/url]
- [url=http://google.com/]Google three[/url]
some more cool stuff";
$myRegexPattern = "/[img]http://google.com/image.jpg[/img]/";
$myNewString = preg_replace($myRegexPattern,"",$myOldString);
echo $myNewString;

回声结果:

Mixed all type of things
    and edited it
    cool stuffasdasdasd

    - [url=http://google.com/]Google one[/url]
    - [url=http://google.com/]Google two[/url]
    - [url=http://google.com/]Google three[/url]
    some more cool stuff

[img]http://google.com/image.jpg[/img] 消失了

让我知道这是否适合您!

有关preg_replace的更多信息:PHP 文档