我正在使用wordpress,我需要过滤掉这种模式中的所有字符串
[gallery columns............]
例如,如果是这样的字符串
[gallery columns="3" ids="426,425,427"] abc asdasdsad
它应该返回,注意到]和下一个字符串的第一个字符之间的空格也应该被删除(如果有的话)
abc asdasdsad
感谢您的帮助,尝试了一些像([\[\s\S\] ])
这样的正则表达式,但是没有用。
答案 0 :(得分:3)
使用模式:
/\[.*?\]\s*/
确切的陈述将使用preg_replace
:
preg_replace( "/\[.*?\]\s*/", "", $str );
答案 1 :(得分:2)
另一种解决方案。 不是正则表达式,而是更有趣。 使用stringpos的组合,substr和trim:)
<?
$string = '[gallery columns="3" ids="426,425,427"] abc asdasdsad';
$pos = strrpos($string, "]");
if ($pos === false) {
echo "Could not find ']' in string '$string'";
}
else {
// Grab what you want from the next char position onwards
$wanted = substr($string, $pos+1);
// Get rid of starting and end spaces
trim($wanted);
// Print out result
echo "RESULT: $wanted";
}
?>
答案 2 :(得分:1)
如果您只对[...]
感兴趣,请尝试
\[[\s\S]+\]
从索引1和2获取匹配的组以匹配
(\[[\s\S]+\])\s*(.*)
您也可以使用[^\]]+
代替[\s\S]+
。
示例代码:
$re = "/(\\[[^\\]]+\\])\\s*(.*)/";
$str = "[gallery columns=\"3\" ids=\"426,425,427\"] abc asdasdsad";
preg_match_all($re, $str, $matches);
答案 3 :(得分:1)
使用WordPress中提供的strip_shortcodes
,可以处理任何和所有类型的WordPress短代码的任何和所有边缘情况。