我在网络文档中有一系列网址,如下所示:
<a href="somepage.php?x=some_document.htm">click here</a>
Run Code Online (Sandbox Code Playgroud)
我想要做的是替换粗体:
<a href="somepage.php?x= some_document.htm ">点击此处</a>
..使用某种加密变体(让我们说一下base64_encoding)..这样的事情:
对于每个匹配,将其转换为base64_encode(匹配)
笔记:
1.短语href ="somepage.php?x =将始终位于短语之前
.2.a double-quote(")将始终跟随短语.
我不是一个正则表达的大师 - 但我知道你们中的一些人.有什么简单的方法吗?
更新:
我通过使用Chris提交的修改版本解决了这个问题,这里是:
function encrypt_param( $in_matches ) {
return 'href="somepage.php?x=' . base64_encode( $in_matches[1] ) . '"';
}
$webdoc = preg_replace_callback( '/href="somepage.php\?x=([^"]+)"/',
'encrypt_param',
$webdoc );
Run Code Online (Sandbox Code Playgroud)
我想你正在寻找这样的东西:
function doSomething($matches) {
return base64_encode($matches[1]);
}
preg_replace_callback('/href="somepage.php?x=([^"]+)"/', 'doSomething', $webdoc);
Run Code Online (Sandbox Code Playgroud)
在preg_replace回答工作方式类似.如果你想做更精细的事情,回调将允许你这样做