ホームページ >バックエンド開発 >PHPチュートリアル >substr_replace 置換の問題
ウェブサイトの記事に表示されるキーワードへのリンクを自動的に追加し、キーワードが複数回表示される場合は 1 回だけ置換する小さなプログラムを作成しました。コードは次のとおりです。 strpos() と substr_replace を使用します。
function keywords_autolink($content) { $keywords=array( '企业管理书籍' => '<a target="_blank" title="企业管理书籍" href="http://www.12reads.cn/">企业管理书籍</a>', '企业管理' => '<a target="_blank" title="企业管理书籍" href="http://www.12reads.cn/">企业管理书籍</a>', '管理学书籍' => '<a target="_blank" title="管理学书籍" href="http://www.12reads.cn/">管理学书籍</a>', '管理书籍' => '<a target="_blank" title="管理书籍" href="http://www.12reads.cn/">管理书籍</a>', '管理类书籍' => '<a target="_blank" title="管理类书籍" href="http://www.12reads.cn/">管理类书籍</a>', '市场营销' => '<a target="_blank" title="市场营销" href="http://www.12reads.cn/category/marketing">市场营销</a>', '职场' => '<a target="_blank" title="职场" href="http://www.12reads.cn/category/career">职场</a>' ); $keys=array_keys($keywords); foreach ($keys as $k) { $pos=strpos($content, $k); if ($pos !== false) { // Nothing found $length=strlen($k); $content=substr_replace($content, $keywords[$k], $pos, $length); //$content是文章内容,$keywords[$k]需要替换成的内容,$pos替换开始的位置,$length数出要从开始的位置算起要替换的词有多长。 unset($k);//最后销毁一下哦。 } } return $content; }add_filter('the_content', 'keywords_autolink');
<a href="http://www.12reads.cn/" title="<a target='_blank' title='企业管理' href='http://www.12reads.cn/'>企业管理</a>书籍" target="_blank">企业管理书籍</a>
function keywords_autolink($content) { $keywords=array( '企业管理书籍' => '<a target="_blank" title="企业管理书籍" href="http://www.12reads.cn/">企业管理书籍</a>', '企业管理' => '<a target="_blank" title="企业管理书籍" href="http://www.12reads.cn/">企业管理书籍</a>', '管理学书籍' => '<a target="_blank" title="管理学书籍" href="http://www.12reads.cn/">管理学书籍</a>', '管理书籍' => '<a target="_blank" title="管理书籍" href="http://www.12reads.cn/">管理书籍</a>', '管理类书籍' => '<a target="_blank" title="管理类书籍" href="http://www.12reads.cn/">管理类书籍</a>', '市场营销' => '<a target="_blank" title="市场营销" href="http://www.12reads.cn/category/marketing">市场营销</a>', '职场' => '<a target="_blank" title="职场" href="http://www.12reads.cn/category/career">职场</a>' ); /* $keys=array_keys($keywords); foreach ($keys as $k) { $pos=strpos($content, $k); if ($pos !== false) { // Nothing found $length=strlen($k); $content=substr_replace($content, $keywords[$k], $pos, $length); //$content是文章内容,$keywords[$k]需要替换成的内容,$pos替换开始的位置,$length数出要从开始的位置算起要替换的词有多长。 unset($k);//最后销毁一下哦。 } } */ $keys = array_keys($keywords); $tmpReplace = []; foreach($keys as $k=>$v){ $tmpReplace[] = $tmp = '['.$k.']'; } $content = str_replace($keys,$tmpReplace,$content); $content = str_replace($tmpReplace,array_values($keywords),$content); return $content; }echo keywords_autolink('企业管理书籍哈哈企业管理呵呵企业管理');
function keywords_autolink($content) { $keywords=array( '企业管理书籍' => '<a target="_blank" title="企业管理书籍" href="http://www.12reads.cn/">企业管理书籍</a>', '企业管理' => '<a target="_blank" title="企业管理书籍" href="http://www.12reads.cn/">企业管理书籍</a>', '管理学书籍' => '<a target="_blank" title="管理学书籍" href="http://www.12reads.cn/">管理学书籍</a>', '管理书籍' => '<a target="_blank" title="管理书籍" href="http://www.12reads.cn/">管理书籍</a>', '管理类书籍' => '<a target="_blank" title="管理类书籍" href="http://www.12reads.cn/">管理类书籍</a>', '市场营销' => '<a target="_blank" title="市场营销" href="http://www.12reads.cn/category/marketing">市场营销</a>', '职场' => '<a target="_blank" title="职场" href="http://www.12reads.cn/category/career">职场</a>' ); /* $keys=array_keys($keywords); foreach ($keys as $k) { $pos=strpos($content, $k); if ($pos !== false) { // Nothing found $length=strlen($k); $content=substr_replace($content, $keywords[$k], $pos, $length); //$content是文章内容,$keywords[$k]需要替换成的内容,$pos替换开始的位置,$length数出要从开始的位置算起要替换的词有多长。 unset($k);//最后销毁一下哦。 } } */ $keys = array_keys($keywords); $tmpReplace = []; foreach($keys as $k=>$v){ $tmpReplace[] = $tmp = '['.$k.']'; } $content = str_replace($keys,$tmpReplace,$content); $content = str_replace($tmpReplace,array_values($keywords),$content); return $content; }echo keywords_autolink('企业管理书籍哈哈企业管理呵呵企业管理');
function keywords_autolink($content) { $keywords=array( '企业管理书籍' => '<a target="_blank" title="企业管理书籍" href="http://www.12reads.cn/">企业管理书籍</a>', '企业管理' => '<a target="_blank" title="企业管理书籍" href="http://www.12reads.cn/">企业管理书籍</a>', '管理学书籍' => '<a target="_blank" title="管理学书籍" href="http://www.12reads.cn/">管理学书籍</a>', '管理书籍' => '<a target="_blank" title="管理书籍" href="http://www.12reads.cn/">管理书籍</a>', '管理类书籍' => '<a target="_blank" title="管理类书籍" href="http://www.12reads.cn/">管理类书籍</a>', '市场营销' => '<a target="_blank" title="市场营销" href="http://www.12reads.cn/category/marketing">市场营销</a>', '职场' => '<a target="_blank" title="职场" href="http://www.12reads.cn/category/career">职场</a>' ); /* $keys=array_keys($keywords); foreach ($keys as $k) { $pos=strpos($content, $k); if ($pos !== false) { // Nothing found $length=strlen($k); $content=substr_replace($content, $keywords[$k], $pos, $length); //$content是文章内容,$keywords[$k]需要替换成的内容,$pos替换开始的位置,$length数出要从开始的位置算起要替换的词有多长。 unset($k);//最后销毁一下哦。 } } */ $keys = array_keys($keywords); $tmpReplace = []; foreach($keys as $k=>$v){ $tmpReplace[] = $tmp = '['.$k.']'; $tmpfind = '/'.$v.'/'; $content = preg_replace($tmpfind,$tmp,$content,1); } $content = str_replace($tmpReplace,array_values($keywords),$content); return $content; }echo keywords_autolink('企业管理书籍哈哈企业管理呵呵企业管理');
ありがとうございます、上記は一度差し替えていますが、経営管理書は複数回差し替えており、経営管理は差し替えていません。
$keywords を見てみましょう
最初の「経営管理書」を「つながりのある経営管理書」に置き換えます
最初の「経営管理」も「つながりのある経営管理書」に置き換えます接続」
2 つの「経営管理書」が置き換えられていません
何が間違っています
$キーワードを見てください
最初の「経営管理書」を「ビジネス」に置き換えてくださいつながりのある経営本」
最初の「経営学」も「つながりのある経営学」に置き換えられました
二番目の「経営学」は置き換えられていません
どうしたの