字符串的一部分,我有一个与字符串替换匹配特定模式
vessel_type='##some_key##' AND vessel_name= '##other_key##'
我希望它被替换与 -
vessel_type='{$_POST['some_key']}' AND vessel_name='{$_POST['other_key']}'
这some_key
和other_key
可以是任何随机文本。我怎么做?像preg_replace()
可以帮助吗?
谢谢。
字符串的一部分,我有一个与字符串替换匹配特定模式
vessel_type='##some_key##' AND vessel_name= '##other_key##'
我希望它被替换与 -
vessel_type='{$_POST['some_key']}' AND vessel_name='{$_POST['other_key']}'
这some_key
和other_key
可以是任何随机文本。我怎么做?像preg_replace()
可以帮助吗?
谢谢。
解决方案与preg_replace_callback
:
$_POST['pew'] = 'LOL!';
$str = 'i said ##pew##';
var_dump(preg_replace_callback('/##(\w+)##/', function($v) { return $_POST[$v[1]]; }, $str));
// string(11) "i said LOL!"
谢谢你,但是如果我不知道是什么的'pew'关键? – mukto90
然后你知道什么? –
您可以使用##
两边包围的捕获组:
$re = '/##([^#]+)##/';
$str = "vessel_type='##some_key##' AND vessel_name= '##other_key##'";
$subst = '{$_POST["$1"]}';
$result = preg_replace($re, $subst, $str);
//=> vessel_type='{$_POST["some_key"]}' AND vessel_name= '{$_POST["other_key"]}'
@ mukto90:这是否工作? – anubhava
是的,像'preg_replace'可以提供帮助。 –
您的代码是SQL注入脆弱:http://php.net/manual/en/security.database.sql-injection.php – Toto