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

时间:2016-04-22 08:49:04

标签: php 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]标签的块,直到带有网址的列表的最后一个。

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

任何帮助将不胜感激!

非常感谢

关心Arkensor

1 个答案:

答案 0 :(得分:1)

如果你的字符串被称为$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 DOCUMENTATION