-1

我在 mysql $comments 中有文本,其中包含一些标签:

echo $comments; 

//result is this

#John# Have a birthday <2.22.2013> [14-00] party /Club/ *Victoria*?

我需要一个 php 代码来不显示所有标签并包含文本,如下所示:

Have a birthday party ?

我使用的这段代码,但它隐藏的只是文本包含在 [] 之间,我也想隐藏其他标签中的文本 <>//##$$**()

                function replaceTags($startPoint, $endPoint, $newText, $source) {
                return preg_replace('#('.preg_quote($startPoint).')(.*)('.preg_quote($endPoint).')#si', '$1'.$newText.'$3', $source);
                }

                $source= $comments;
                $startPoint='[';
                $endPoint=']';
                $newText='';
                echo replaceTags($startPoint, $endPoint, $newText, $source);

我必须在这里改变什么?问候

4

1 回答 1

0

您可以使用正则表达式删除不需要的部分:

preg_replace('@#[^#]+#|<[^>]+>|\[[^\]]+]|/[^/]+/|*[^*]+*@', '', $foo);

通过匹配您的分隔符和文本,它们都以类似的方式工作,例如

*[^*]+*

可以分解成

*      the starting *
[^*]   any character that is not a *
[^*]+  any run of non-* characters
*      the ending *

该模式对您的所有定界符对重复,并被放入一个大型正则表达式(带有 alternation |),基本上说“用任何内容替换这些模式中的任何一个”。

于 2013-02-26T09:12:29.123 回答