使用PHP从较大的字符串中删除文本内的文本

时间:2011-10-31 10:20:42

标签: php string replace shortcode

我想要做的是,如果它存在,删除“短代码”中出现的文本,例如:Here's some content [shortcode]I want this text removed[/shortcode] Some more content要更改为Here's some content [shortcode][/shortcode] Some more content

这似乎是一件非常简单的事情,但我无法弄清楚.. = /

短代码只会在整个字符串中显示一次。

提前感谢您的帮助。

7 个答案:

答案 0 :(得分:2)

试试这个:

$var = "Here's some content [shortcode]I want this text removed[/shortcode] Some more content";
$startTag = "[shortcode]";
$endTag = "[/shortcode]";
$pos1 = strpos($var, $startTag) + strlen($startTag);
$pos2 = strpos($var, $endTag);
$result = substr_replace($var, '', $pos1, $pos2-$pos1);

答案 1 :(得分:2)

使用preg_replace()非常容易。出于您的目的,使用/\[shortcode\].*\[\/shortcode\]/作为模式。

$replace = "[shortcode][/shortcode]"; 
$filteredText = preg_replace("/\[shortcode\].*\[\/shortcode\]/", $replace, $yourContent);

有关详细信息,请参阅http://php.net/manual/en/function.preg-replace.php

答案 2 :(得分:1)

可以使用strpos()在字符串中查找[substring]和[/ substring]的位置,并通过substr_replace()

将文本替换为空白

答案 3 :(得分:1)

如果你不想打扰经常性的事情:

如果你在字符串中有[shortcode]标签,那么它确实没有问题:只需使用嵌套使用substr:

substr($string,0,strpos($string,'[substring]')+11)+substr($string,strpos($string,'[/substring]'),strlen($string))

其中第一个substr将字符串剪切到要剪切的字符串的开头,第二个字符串添加字符串的剩余部分。

见这里:

http://www.php.net/manual/en/function.substr.php

http://www.php.net/manual/en/function.strpos.php

答案 4 :(得分:0)

在php中使用正则表达式来摆脱它。

preg_replace (shortcode, urText, '', 1)

答案 5 :(得分:0)

$string = "[shortcode]I want this text removed[/shortcode]"; 
$regex = "#\[shortcode\].*\[\/shortcode\]#i"; 
$replace = "[shortcode][/shortcode]"; 
$newString = preg_replace ($regex, $replace, $string, -1 );  

答案 6 :(得分:0)

$content = "Here's some content [shortcode]I want this text removed[/shortcode] Some more content to be changed to Here's some content [shortcode][/shortcode] Some more content";
print preg_replace('@(\[shortcode\])(.*?)(\[/shortcode\])@', "$1$3", $content);

收率:

这里有一些内容[短代码] [/短代码]更多内容需要更改为以下内容[短代码] [/短代码]更多内容