好的,请在此处输入此代码:
$search = array('{POST}', '{post}');
$replace = $recent['body'];
$message = str_replace($search, $replace, html_entity_decode($params['post_html']));
$params[post_html']
是一个变量,用于保存定义了{POST}或{post}的用户输入,例如可能是这样的,在它被解析之后:
<span class="upperframe">
<span></span>
</span>
<div class="roundframe dp_control_flow">
{POST}
</div>
<span class="lowerframe">
<span></span>
</span>
无论如何,我在这里遇到的问题是,出于某种原因,str_replace
还替换了替换参数中的{POST}
或{post}
个字符串:$recent['body']
不应该发生,我该如何解决这个问题,以便它不会对需要替换{POST}
或{post}
的东西进行替换?
我没想到这个函数会在replace变量中替换。哎哟。有没有解决的办法?我是否必须使用preg_replace?如果是这样,有人可以为我提供正则表达式吗?
谢谢你们:)
答案 0 :(得分:1)
使用str_ireplace(),然后您不需要数组进行搜索,问题就解决了。
$recent['body']="*test* {post} *test*";
$params['post_html']="foo {POST} bar";
//$search = array('{POST}', '{post}');
$search = '{post}';
$replace = $recent['body'];
$message = str_ireplace($search, $replace, html_entity_decode($params['post_html']));
echo $message;
//with array
// foo *test* *test* {post} *test* *test* bar
//without
//foo *test* {post} *test* bar