使用链接中的id替换带有哈希的链接

时间:2013-10-15 09:51:51

标签: php regex preg-replace

我正在尝试使用该特定ID替换带有生成值的链接中的id。例如,我有一个字符串(可能)包含链接:

Lorem ipsum dolor sit amet, consectetur adipiscing elit
http://www.example.com/file/1

Curabitur volutpat nulla purus, vitae pharetra diam commodo porttitor
http://www.example.com/file/2

我想用一个函数替换两个id,在这个函数中我根据它们所在的页面更改结果(在这种情况下,每个页面上的唯一链接到同一个文件)。我想我需要preg_replace(),但如何将id作为变量传递给替换函数?

例如,像(伪代码):

function hash_it($file_id, $page_id) {
     return md5($file_id . $page_id);
}
$page_id = 1;
$text = preg_replace('"\b(http://www.example.com/file/\d+)"', hash_it($1, $page_id), $text);

提前致谢!

1 个答案:

答案 0 :(得分:0)

如果您希望使用回调来替换数据,请使用preg_replace_callback()之类的内容:

$text = preg_replace_callback('/\b(http\:\/\/www\.example\.com\/file\/\d+)/', 'hash_it', $text);

- 你也不应该忘记正则表达式分隔符(它们应该是PHP中的非aplphanumeric,在我的样本中它是/)。当然,要转义.

之类的特殊正则表达式符号

现在,关于你的回调:它将使用完全匹配的数据数组,而不是你已经定义的(单独的参数) - 参见样本的手册页。