Home  >  Article  >  Backend Development  >  请教正则里面的值${1}如何使用函数处理?如何个写法

请教正则里面的值${1}如何使用函数处理?如何个写法

WBOY
WBOYOriginal
2016-06-13 11:21:111226browse

请问正则里面的值${1}怎么使用函数处理?怎么个写法?
$user_pattern = "/ \@(.+?)([\s|:]|$ )/";  
$str = preg_replace($user_pattern, ' ${1} ', $str ); 

请问怎么将${1}的中文进行urlencode函数转码?我用下面这样不行,都当成字符串了。

$str = preg_replace($user_pattern, ' ${1} ', $str ); 


------解决方案--------------------
用 preg_replace_callback() 吧,
如:

function cb($matches) {
    return sprintf(' %1$s ',urlencode($matches[1]));
}
$user_pattern = "/\@(.+?)([\s
------解决方案--------------------
:]
------解决方案--------------------
$)/";  
$str = [email protected]';
$str = preg_replace_callback($user_pattern,'cb', $str ); 
echo $str;
------解决方案--------------------
参见preg_replace_callback第5个参数,设为1就只替换一次,而第一次替换便是A标签中的
------解决方案--------------------
本帖最后由 xuzuning 于 2013-04-10 09:53:52 编辑 你的原方案是可行的,只是遗漏了一些东西
$user_pattern = "/ \@(.+?)([\s<br><font color='#FF8000'>------解决方案--------------------</font><br>:]<br><font color='#FF8000'>------解决方案--------------------</font><br>$ )/e";  <br />$str = preg_replace($user_pattern, '" <a href=\"http://127.0.0.1/".urlencode("${1}")."\">${1}</a>"',$str );
 
和你写的对比一下就知道了
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn