我试图做一些简单的事情,但我失败了:我想在PHP中使用preg_replace使关键字成为链接,但我不想将其插入标题中。
我的实际预存:
$data_replace = '<a href="'.$link.'">$1</a>';
$word_to_replace = "keyword";
$data_source = "<h1>keyword</h1><p>keyword</p>"
$pattern = "/''b(?!<h[0-6]*'>)(.*?)(" . trim($word_to_replace) . ")(.*?)(?!<'/h[0-6]>)''b/";
preg_replace($pattern, $data_replace, $data_source, 1);
我想得到:
<h1>keyword</h1><p><a href="http://...">keyword</a></p>
目前,我的输出为:
<h1><a href="http://...">keyword</a></h1><p>keyword</p>
我的正则表达式模式哪里错了?谢谢
试试这个:
<?php
$data_replace = '<a href="'.$link.'">$1</a>';
$words = ["keyword","foo"];
$out = "<h1>keyword</h1><p>keyword</p>";
foreach ($words as $word){
$pattern = "/(<[^h].*?>)($word)(<'/)/";
$out = preg_replace($pattern, "''1<a href='"#'">$word</a>''3", $out);
}
var_dump($out);
产品:
dejavu:~ jancha$ php -q aa.php
string(46) "<h1>keyword</h1><p><a href="#">keyword</a></p>"
p.s。这对多个关键字有增强功能。