php preg_replace 正则替换问题
$a='abc123d---abc456d---abc789d';$a=preg_replace("/abc(.+?)d/i","thisis"."$1",$a);ech...
$a = 'abc123d---abc456d---abc789d';
$a = preg_replace("/abc(.+?)d/i","this is "."$1",$a);
echo $a;
我想处理 $1 的值,例如 base64_encode("$1"), 但是直接加进去却不行.
$a = preg_replace("/abc(.+?)d/i","this is ".base64_encode("$1"),$a);
有什么办法可以实现.? 展开
$a = preg_replace("/abc(.+?)d/i","this is "."$1",$a);
echo $a;
我想处理 $1 的值,例如 base64_encode("$1"), 但是直接加进去却不行.
$a = preg_replace("/abc(.+?)d/i","this is ".base64_encode("$1"),$a);
有什么办法可以实现.? 展开
2个回答
展开全部
关于JDE= 是怎么来的?
echo base64_decode('JDE='); //output : $1 就是说你的$1被当作字符串解释了。
实现你的需要有几种方法,贴代码,你自己看吧,我觉得表述的听清晰的:
<?php
header('Content-Type:text/html; charset=utf-8');
$a = 'LvChengbin';
echo base64_decode('JDE=');
echo '<br />', base64_encode('Lv');
$a = preg_replace('/lv/ei', "base64_encode('$0')", $a);
echo '1 : ', $a, '<br />';
echo '2 : ', preg_replace_callback('/lv/i',
create_function(
'$matches',
'return base64_encode("$matches[0]")'
), $a), '<br />';
function forReplace($matches) {
return base64_encode($matches[1]);
}
echo '3 : ', preg_replace_callback('/lv/i', 'forReplace', $a), '<br />';
你可以自己执行一下试试, 有问题建议查看PHP手册:
http://cn2.php.net/manual/en/function.preg-replace.php
http://cn2.php.net/manual/en/function.preg-replace-callback.php
还是有问题,可以Hi我。
为什么preg_replace_callback 会不行? preg_replace () 都可以。
<?php
header('Content-Type:text/html; charset=utf-8');
$a = 'abc123d--abc456d--abc789d';
echo preg_replace('/abc(.+?)d/ei', "'this is ' . base64_encode('$1')", $a), '<br />';
function forReplace($matches) {
return 'this is ' . base64_encode($matches[1]);
}
echo preg_replace_callback('/abc(.+?)d/i', 'forReplace', $a), '<br />';
$a = preg_replace_callback('/abc(.+?)d/i',
create_function(
'$matches',
'return "this is " . base64_encode("$matches[1]");'
),
$a);
echo $a;
这三种写法都可以,自己试试看。
echo base64_decode('JDE='); //output : $1 就是说你的$1被当作字符串解释了。
实现你的需要有几种方法,贴代码,你自己看吧,我觉得表述的听清晰的:
<?php
header('Content-Type:text/html; charset=utf-8');
$a = 'LvChengbin';
echo base64_decode('JDE=');
echo '<br />', base64_encode('Lv');
$a = preg_replace('/lv/ei', "base64_encode('$0')", $a);
echo '1 : ', $a, '<br />';
echo '2 : ', preg_replace_callback('/lv/i',
create_function(
'$matches',
'return base64_encode("$matches[0]")'
), $a), '<br />';
function forReplace($matches) {
return base64_encode($matches[1]);
}
echo '3 : ', preg_replace_callback('/lv/i', 'forReplace', $a), '<br />';
你可以自己执行一下试试, 有问题建议查看PHP手册:
http://cn2.php.net/manual/en/function.preg-replace.php
http://cn2.php.net/manual/en/function.preg-replace-callback.php
还是有问题,可以Hi我。
为什么preg_replace_callback 会不行? preg_replace () 都可以。
<?php
header('Content-Type:text/html; charset=utf-8');
$a = 'abc123d--abc456d--abc789d';
echo preg_replace('/abc(.+?)d/ei', "'this is ' . base64_encode('$1')", $a), '<br />';
function forReplace($matches) {
return 'this is ' . base64_encode($matches[1]);
}
echo preg_replace_callback('/abc(.+?)d/i', 'forReplace', $a), '<br />';
$a = preg_replace_callback('/abc(.+?)d/i',
create_function(
'$matches',
'return "this is " . base64_encode("$matches[1]");'
),
$a);
echo $a;
这三种写法都可以,自己试试看。
展开全部
怎么不行啊, 测试过可以
追问
输出 this is JDE=---this is JDE=---this is JDE= ,这个JDE=是什么~
追答
对不起, 看错了
JDE= 是 "$1" 这个字串的 base64_encode后的碼,
这个$1 取不到() 內的值, 我也想不到解決方法, 不好意思
试过用preg_replace_callback 也不行, 因為preg_replace_callback的參数是傳整个匹配的值, 而不是()內的值
或者你用preg_replace_callback , 然后修改下匹配的表达式
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询