我想要做的是,如果它存在,删除“短代码”中出现的文本,例如:Here's some content [shortcode]I want this text removed[/shortcode] Some more content
要更改为Here's some content [shortcode][/shortcode] Some more content
。
这似乎是一件非常简单的事情,但我无法弄清楚.. = /
短代码只会在整个字符串中显示一次。
提前感谢您的帮助。
答案 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将字符串剪切到要剪切的字符串的开头,第二个字符串添加字符串的剩余部分。
见这里:
答案 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);
收率:
这里有一些内容[短代码] [/短代码]更多内容需要更改为以下内容[短代码] [/短代码]更多内容