我創建了一個包含兩列的CSV文件,其中一列帶有由|另一個帶有URL。PHP preg_match在同一頁面上多次使用和多次使用
我想用這個文件做的是在我的博客文章中找到關鍵字,並用指向CSV文件中的URL的鏈接替換純文本。最終目標是提高一些關鍵字的SEO表現。
我用下面的代碼:
foreach ($links as $key=>$value)
{
$url=$value["url"];
$pattern="#<p.*?>(.*)\ (".$value["keyword"].")\ (.*)</p>#";
$content=preg_replace($pattern,"$1 <a href=\"".$url."\">$2</a> $3",$content);
}
$鏈接是一個包含CSV文件的內容的陣列,它包含關鍵字(S)和包含URL的關鍵的關鍵。
例
$value["keyword"] contains keyword1|keyword2
$value["url"] contains the url to point to
$content contains the article
上述作品這裏提到的代碼,但不完全是我想它是如何工作的。對於一個給定的關鍵字,它不會替換該關鍵字的所有出現。一些關鍵字根本沒有被替換。正則表達式肯定有問題,但我沒有直接看到在哪裏。
最後,我想什麼:
- 通過鏈接
- 限制關鍵字被替換,以避免各地文章鏈接的倍量(如更換關鍵詞:更換兩個前兩個OCCURENCES)
在頁面加載應用的preg_replace,因爲我要定期更改關鍵字列表,以找出最有效的關鍵字組合
- 避免影響頁面加載性能
- 我使用WordPress的,不想簡而言之使用外部插件
所以我的問題是:
- 我該如何轉換正則表達式,以便所有關鍵字都被替換爲最多X次
- 我如何確保preg_match不會降低我的頁面性能
任何想法?
非常感謝!
洛朗
您的正則表達式不會按照您的想法工作。你爲什麼看着'p'標籤?你的意思是說,你不想匹配的話外面有相同的單詞嗎? – revo
事實上,這些詞有時出現在標題或其他鏈接中,所以我想確保我只替換純文本的詞。 – Laurent