我正在使用preg_replace函数,但我无法弄清楚如何使它工作,这个函数似乎对我不起作用。
我要做的是将字符串转换为链接,如果任何单词包含%(百分比)字符。
例如,如果我有字符串“go to%mysite”,我想将mysite单词转换为链接。 我试过以下......
$data = "go to %mysite";
$result = preg_replace('/(^|[\s\.\,\:\;]+)%([A-Za-z0-9]{1,64})/e',
'\\1%<a href=#>\\2</a>', $data);
......但它不起作用。
对此的任何帮助都将非常感激。
由于
涓
答案 0 :(得分:3)
这里的问题是e
修饰符,它将替换值评估为php代码并因致命错误而失败
删除e
属性将输出go to %<a href=#>mysite</a>
,如果需要结果,则无需更改任何其他内容。
但我认为preg_replace_callback
是你真正需要的,即:
function createLinks($matches)
{
switch($matches[2])
{
case 'mysite':
$url = 'http://mysite.com/';
break;
case 'google':
$url = 'http://www.google.com/';
break;
}
return "{$matches[1]}%<a href=\"{$url}\">{$matches[2]}</a>";
}
$data = "go to %mysite or visit %google";
$data = preg_replace_callback(
'/(^|[\s\.\,\:\;]+)%([A-Za-z0-9]{1,64})/',
'createLinks',
$data
);
将导致go to %<a href="http://mysite.com/">mysite</a> or visit %<a href="http://www.google.com/">google</a>