以下の配列のようなキーワードのリストを使用します。
$keywordlist = array(
'Apple iPhone' => 'http://www.example.com/apple/iphone/',
'Apple iPad' => 'http://www.example.com/apple/ipad',
'Samsung Galaxy Ace' => 'http://www.example.com/samsung/galaxy-ace',
'Samsung Galaxy Nexus' => 'http://www.example.com/samsung/galaxy-nexus',
'Samsung' => 'http://www.example.com/samsung/',
'Apple' => 'http://www.example.com/apple/'
);
キーワードを関連する URL に置き換えたいと考えています。
それらをループして and を使用しようとしましstr_replace
たpreg_replace
が、これはすべてのキーワードのメーカー名を置き換えているため、すべてのキーワードが「Samsung」と「Apple」のリンクに変わります。私は次にどこに向かうべきかについて少し困惑しています、誰か何か指針を持っていますか?
編集:
以下のコードを使用してループスルーしました-
foreach($keywordlist as $name => $link){
$content = str_replace($name, '<a href="'.$link.'">'.$name.'</a>', $content);
}
解決:
問題は、置き換えていたリンク テキストにあると思います。その後、同様のキーワードを持つ他のフレーズに再び置き換えられました。以下が機能するようになりました。
これを行うためのより良い方法を考えている人はいますか?
$content = "<p>This Apple iPhone is from Apple</p>
<p>This Apple iPad is from Apple</p>
<p>This Samsung Galaxy Ace is from Samsung</p>
<p>This Samsung Galaxy Nexus is from Samsung</p>
<p>This is a Samsung</p>
<p>This is an Apple</p>";
$keywordlist = array(
'Apple iPhone' => '[1]',
'Apple iPad' => '[2]',
'Samsung Galaxy Ace' => '[3]',
'Samsung Galaxy Nexus' => '[4]',
'Samsung' => '[5]',
'Apple' => '[6]'
);
$content = str_replace(array_keys($keywordlist), array_values($keywordlist), $content);
$urllist = array(
'[1]' => '<a href="http://www.example.com/apple/iphone/">Apple iPhone</a>',
'[2]' => '<a href="http://www.example.com/apple/ipad">Apple iPad</a>',
'[3]' => '<a href="http://www.example.com/samsung/galaxy-ace">Samsung Galaxy Ace</a>',
'[4]' => '<a href="http://www.example.com/samsung/galaxy-nexus">Samsung Galaxy Nexus</a>',
'[5]' => '<a href="http://www.example.com/samsung/">Samsung</a>',
'[6]' => '<a href="http://www.example.com/apple/">Apple</a>'
);
$content = str_replace(array_keys($urllist), array_values($urllist), $content);
echo $content;
出力:
このSamsung Galaxy AceはSamsung 製です
このSamsung Galaxy NexusはSamsung 製です
これはサムスン
これはアップルです