我遇到一个比较棘手的难题。
有这样一种字符串: "abcd ef #[gh i]# jkl #[m n]#op q"
也就是说,这个字符串中有空格,还有用#[ ]#包围起来的子串,子串里面也可能有空格。
现在的要求是,要用正则表达式替换子串外面部分里的空格为 而#[ ]#子串里面如果有空格,不替换。
好难啊,这个应该怎么写呢??
有这样一种字符串: "abcd ef #[gh i]# jkl #[m n]#op q"
也就是说,这个字符串中有空格,还有用#[ ]#包围起来的子串,子串里面也可能有空格。
现在的要求是,要用正则表达式替换子串外面部分里的空格为 而#[ ]#子串里面如果有空格,不替换。
好难啊,这个应该怎么写呢??
echo preg_replace("/ (?!\w*\]#)/", ' ', $str);//该方法适合所有情形
$arr = preg_split("/(#\[.*?\]#)/", $str, -1, PREG_SPLIT_DELIM_CAPTURE);
$output = '';
for ($i = 0, $j = count($arr); $i < $j; ++$i) {
if ($i % 2 == 0) $output .= str_replace(' ', ' ', $arr[$i]);
else $output .= $arr[$i];
}
echo $output;