您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> PHP >> substr_replace替换问题

substr_replace替换问题

来源:网络整理     时间:2016/5/6 23:51:29     关键词:replace,substr

关于网友提出的“substr_replace替换问题”问题疑问,本网通过在网上对“substr_replace替换问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题:substr_replace替换问题
描述:

本帖最后由 Solmyr_biti 于 2016-04-28 00:18:01 编辑

写了一个小程序,想把网站文章中出现的关键词自动加链接,并且当关键词出现多次时只替换一次,与是用到了strpos()及substr_replace实现了此功能,代码如下:
function keywords_autolink($content) {
    $keywords=array(
            '企业管理书籍' => '企业管理书籍',
            '企业管理' => '企业管理书籍',
            '管理学书籍' => '管理学书籍',
            '管理书籍' => '管理书籍',
            '管理类书籍' => '管理类书籍',
            '市场营销' => '市场营销',
            '职场' => '职场'
 ); 
    $keys=array_keys($keywords);
    foreach ($keys as $k) {
      $pos=strpos($content, $k);
      if ($pos !== false) {
        // Nothing found
        $length=strlen($k);
        $c />         //$content是文章内容,$keywords[$k]需要替换成的内容,$pos替换开始的位置,$length数出要从开始的位置算起要替换的词有多长。
        unset($k);//最后销毁一下哦。
    }
    } 
       
  return $content;
  
}
add_filter('the_content', 'keywords_autolink');

但现在的一个问题是,当同时出现两个需要替换的词时就会乱套,比如,企业管理书籍和企业管理同时出现了,即“企业管理书籍企业管理'”,那么这时候替换结果就成了:
企业管理书籍

请问这种问题如何解决呀?大概知道用排序法什么的,可是不太懂,还望前辈们指点下,谢谢了!

解决方案1:


function keywords_autolink($content) {
    $keywords=array(
            '企业管理书籍' => '企业管理书籍',
            '企业管理' => '企业管理书籍',
            '管理学书籍' => '管理学书籍',
            '管理书籍' => '管理书籍',
            '管理类书籍' => '管理类书籍',
            '市场营销' => '市场营销',
            '职场' => '职场'
);
/*
    $keys=array_keys($keywords);
    foreach ($keys as $k) {
      $pos=strpos($content, $k);
      if ($pos !== false) {
// Nothing found
$length=strlen($k);
$c /> //$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('企业管理书籍哈哈企业管理呵呵企业管理');

以上介绍了“substr_replace替换问题”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/948433.html

相关图片

相关文章