PHP正規表現置換サイトキーワードリンク後の空白問題の解決策
タイトルが適切かどうかわかりません。具体的な状況は次のとおりです。Web サイトでキーワード リンク関数を追加する必要があり、記事のコンテンツを正規表現と照合して置換する必要があるため、preg_replace 関数が使用されます。置き換えられたプログラムコードは以下の通りです:
関数 ReplaceKeyword($linkDefs,$content){
$linkMap = 配列();
/*foreach($linkDefs as $row) {
$linkMap[] =explode(',', $row);
}*/
$linkMap = $linkDefs;
//元のリンクをテキストに置き換えます
foreach($linkMap as $row) {
$content = preg_replace('/(
s*)('.$row[0].')(s*)/suit', $row[0], $コンテンツ);
}
//キーワードを長いものから短いものに並べ替えます
usort($linkMap, '_sortDesc');
//var_dump($linkMap);
$tmpKwds = array(); //ストレージはサブキーワードを一時的に置き換えます
$k_count=0;
foreach($linkMap as $i=>$row) {
list($kwd, $url) = $row;
for($j=$i+1; $j
}
プログラムはオンラインで見つけてローカルでテストしましたが、ローカル環境は PHP 5.3 で、サービスは 5.2 でした。最初は PHP のバージョンの問題だと思いました。 ereg と preg の違いでしたが、交換後も動作しません。後でネットで調べてみると、pcre.backtrack_limit と pcre.recursion_limit を調整するだけで十分だと言っているネチズンがいたので試してみたところ、うまくいきました。設定の問題のようですが、通常の状況では、PHP のデフォルト設定で問題ないはずです。自分で書いたプログラムではまだ十分ではありません。
IE6とFIREFOX 3.0で試してみましたが、問題なくこのように書くことができました。
新しいドキュメント
Xhtml Linux
以下はFIREFOX 3.0 で取得した BODY の innerHTM
Xhtml Lx