preg_replace Sinsde Paragparah 广告主播 link
preg_replace insade paragprah add anchor link
我想将段落内的文本转换为锚点link。
$change = array(
'google' => 'www.google.com',
'facebook' => 'www.facebook.com',
);
$text = "
<h1>Search on google for facebook</h1>
<p>Search on google for facebook</p>
";
foreach ($change as $word => $url) {
$sentence = preg_replace('@(?<=\W|^)('.$word.')(?=\W|$)@i', '<a href="'.$url.'"></a>', $text);
}
echo $sentence;
我要这样果断:
<h1>Search on google for facebook</h1>
<p>Search on <a href="www.google.com">google</a> for <a href="www.facebook.com">facebook</a></p>
您可以先尝试匹配 p
标签,然后在 preg_replace_callback
匿名函数中执行所有替换:
$change = array(
'google' => 'www.google.com',
'facebook' => 'www.facebook.com',
);
$text = "
<h1>Search on google for facebook</h1>
<p>Search on google for facebook</p>
";
$sentence = preg_replace_callback('~(<p\b[^>]*>)(.*?)(</p>)~s', function($m) use ($change) {
return $m[1] . preg_replace(
array_map(function ($x) { return '@(?<=\W|^)('.preg_quote($x, "@").')(?=\W|$)@i'; }, array_keys($change)),
array_map(function ($y) { return '<a href="'. $y .'"></a>'; }, array_values($change)),
$m[2]). $m[3]; }
, $text);
echo $sentence;
参见PHP demo。
我想将段落内的文本转换为锚点link。
$change = array(
'google' => 'www.google.com',
'facebook' => 'www.facebook.com',
);
$text = "
<h1>Search on google for facebook</h1>
<p>Search on google for facebook</p>
";
foreach ($change as $word => $url) {
$sentence = preg_replace('@(?<=\W|^)('.$word.')(?=\W|$)@i', '<a href="'.$url.'"></a>', $text);
}
echo $sentence;
我要这样果断:
<h1>Search on google for facebook</h1>
<p>Search on <a href="www.google.com">google</a> for <a href="www.facebook.com">facebook</a></p>
您可以先尝试匹配 p
标签,然后在 preg_replace_callback
匿名函数中执行所有替换:
$change = array(
'google' => 'www.google.com',
'facebook' => 'www.facebook.com',
);
$text = "
<h1>Search on google for facebook</h1>
<p>Search on google for facebook</p>
";
$sentence = preg_replace_callback('~(<p\b[^>]*>)(.*?)(</p>)~s', function($m) use ($change) {
return $m[1] . preg_replace(
array_map(function ($x) { return '@(?<=\W|^)('.preg_quote($x, "@").')(?=\W|$)@i'; }, array_keys($change)),
array_map(function ($y) { return '<a href="'. $y .'"></a>'; }, array_values($change)),
$m[2]). $m[3]; }
, $text);
echo $sentence;
参见PHP demo。