0

我正在尝试使用该特定 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);

提前致谢!

4

1 回答 1

0

如果你想要一个回调来替换你的数据,那么使用preg_replace_callback()像:

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

- 你也不应该忘记正则表达式分隔符(它们在 PHP 中应该是非字母数字,在我的示例中是/)。而且,当然,转义特殊的正则表达式符号,如.

现在,关于您的回调:它将与完全匹配的数据数组一起使用,而不是像您定义的那样(单独的参数) - 请参阅手册页以获取示例。

于 2013-10-15T09:54:43.660 回答