例如:<font color='red'>NBA</font> 替换NBA其中的N为<font color='green'>N</font>而不替换<font>中的n,
注意此次不区分大小写请各位帮帮忙写个正则或其他替换都行多谢了

解决方案 »

  1.   


    echo preg_replace('#nba#i', "<font color='green'>N</font>BA", $html);//
      

  2.   

    谢谢楼上的回答 但我想要一个匹配范围广点的,可能并不只是是NBA这个字符串
    如果像这种情况上面的例子就用不了了 N<font color='red'>B</font>A
    我最终想要解决的是我如何在匹配替换的时候忽略<font>标签
      

  3.   


    $str = "<font color='red'>NBA</font>NCAA<font color='blue'>WCG</font>2012<font color='yellow'>WLK</font>";
    $strnew = preg_replace("#(<font[^>]*>)(\w)#","$1<font color='green'>$2</font>",$str);
    echo $str;
    echo "<br />";
    echo $strnew;看楼主的意思我估摸着是想把已经有font标签的内容首字母给统一价格font标签做颜色。
      

  4.   

    $s = <<< HTML
    <font color='red'>NBA</font>
    <font color='red'>cNBA</font>
    HTML;$p = "/(>.*)(n)(.*<)/i";
    $r = "$1<font color='green'>$2</font>$3";echo preg_replace($p, $r, $s);
    <font color='red'><font color='green'>N</font>BA</font>
    <font color='red'>c<font color='green'>N</font>BA</font>
      

  5.   

    为什么还是不行啊 我把我的代码贴出来大家帮我看看应该怎么写吧// 目的就是要把$res[$i]['name']中所有匹配$searchCon数组中的高亮显示
    /**
     *  源字符串:$res[$i]['name'] = NBA成员
     *  搜索条件: $searchCon = array("n","f");
     *  显示结果:<font color='red'>N</font>BA成员
     *  如何解决当第二次循环匹配f的时候不把包围N的font标签的f替换了
     */$res[$i]['name'] = $res[$i]['name'];//需要替换的源字符串
    $searchCon = array("f","n");  //需要高亮显示的字符
                      for($n = 0; $n < count($searchCon);$n++) {
                         $pattern = "/(>.*)(".$searchCon[$n].")(.*<)/i";
                         $replace = "$1<font color='green'>$2</font>$3";
                         $res[$i]['name'] = preg_replace($pattern,$replace,$res[$i]['name']);
      }
    请大家再帮我看看,谢谢
      

  6.   

    代码效果怎么这样呢<?php 
     //   目的就是要把$res[$i][ 'name ']中所有匹配$searchCon数组中的高亮显示
    /**
      *     源字符串:$res[$i][ 'name ']   =   NBA成员
      *     搜索条件:   $searchCon   =   array( "n ", "f ");
      *     显示结果: <font   color= 'red '> N </font> BA成员
      *     如何解决当第二次循环匹配f的时候不把包围N的font标签的f替换了
      */$res[$i][ 'name ']   =   $res[$i][ 'name '];//需要替换的源字符串
    $searchCon   =   array( "f ", "n ");     //需要高亮显示的字符for($n   =   0;   $n   <   count($searchCon);$n++)   {
        $pattern   =   "/(> .*)( ".$searchCon[$n]. ")(.* <)/i ";
        $replace   =   "$1 <font   color= 'green '> $2 </font> $3 ";
        $res[$i][ 'name ']   =   preg_replace($pattern,$replace,$res[$i][ 'name ']);
    }echo $res[$i][ 'name '];
    ?>
      

  7.   

    /后别加上i,直接匹配N,f是要匹配小写吗?是的话就先匹配f,再匹配N,要是匹配F的话就随意了
      

  8.   

    高亮显示用这个JS的吧用PHP匹配我估计着服务器压力会增大,把匹配工作交给客户端
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>关键词高亮显示</title>
    <style type="text/css">
    <!--
    .adKeyword {
    color: #FF0000;
    }
    -->
    </style>
    </head>
    <body>
    <p>  一个和尚挑水吃、两个和尚抬水吃、三个和尚没水吃。总寺的方丈大人得知情况后,就派来了一名主持和一名书记,共同负责解决这一问题。主持上任后,发现问题的关键是管理不到位,于是就招聘一些和尚成立了寺庙管理部来制定分工流程。为了更好地借鉴国外的先进经验,寺庙选派唐僧等领导干部出国学习取经;此外,他们还专门花钱请了天主教、基督教的神父传授MBA。神父呆了不久留下几个东东就走了,一个叫BPR,一个叫ERP。</p>
    <p> </p>
    <p>  书记也没闲着,他认为问题的关键在于人才没有充分利用、寺庙文化没有建设好,于是就成立了人力资源部和寺庙工会等等,并认认真真地走起了竞聘上岗和定岗定编的过场。</p>
    <p> </p>
    <p>  几天后成效出来了,三个和尚开始拼命地挑水了,可问题是怎么挑也不够喝。不仅如此,小和尚都忙着挑水、寺庙里没人念经了,日子一长,来烧香的客人越来越少,香火钱也变得拮据起来。为了解决收入问题,寺庙管理部、人力资源部等连续召开了几天的会,最后决定,成立专门的挑水部负责后勤和专门的烧香部负责市场前台。同时,为了更好地开展工作,寺庙提拔了十几名和尚分别担任副主持、主持助理,并在每个部门任命了部门小主持、副小主持、小主持助理。</p>
    <p> </p>
    <p>  老问题终于得到缓解了,可新的问题跟着又来了。前台负责念经的和尚总抱怨口渴水不够喝,后台挑水的和尚也抱怨人手不足、水的需求量太大而且没个准儿,不好伺候。</p>
    <p> </p>
    <p>  为了更好地解决这一矛盾,经开会研究决定,成立一个新的部门:喝水响应部,专门负责协调前后台矛盾。为了便于沟通、协调,每个部门都设立了对口的联系和尚。   协调虽然有了,但效果却不理想,仔细一研究,原来是由于水的需求量不准、水井数量不足等原因造成的。于是各部门又召开了几次会,决定加强前台念经和尚对饮用水的预测和念经和尚对挑水和尚满意度测评等,让前后台签署协定、相互打分,健全考核机制。为了便于打分考核,寺院特意购买了几个计算机系统,包括挑水统计系统、烧香统计系统、普通香客捐款分析系统、大香客捐款分析系统、挨上必死系统(简称IBS系统)、马上就死系统(简称MS系统)等,同时成立香火钱管理部、香火钱出账部、打井策略研究部、打井建设部、打井维护部等等。由于各个系统出来的数总不准确、都不一致,于是又成立了技术开发中心,负责各个系统的维护、二次开发。由于部门太多、办公场地不足,寺院专门成立了综合部来解决这一问题,最后决定把寺院整个变成办公区,香客烧香只许在山门外烧。 </p>
    <p> </p>
    <p>  部门多、当官的多档和开会自然就多,为了减少文山会海,综合办牵头召开了N次关于减少开会的会,并下达了“关于减少档的档”。同时,为了精简机构、提高效率,寺院还成立了精简机构办公室、机构改革研究部等部门。 </p>
    <p> </p>
    <p>  一切似乎都合情合理,但香火钱和喝水的问题还是迟迟不能解决。问题在哪呢?有的和尚提出来每月应该开一次分析会,于是经营分析部就应运而生了。分析需要很多数据和报表,可系统总是做不到,于是每个部门都指派了一些和尚手工统计、填写报表、给系统打工。</p>
    <p> <a href="http://www.lanrentuku.com">懒人图库</a></p>
    <p>  寺院空前地热闹起来,有的和尚在拼命挑水、有的和尚在拼命念经、有的和尚在拼命协调、有的和尚在拼命分析……忙来忙去,水还是不够喝、香火钱还是不够用。什么原因呢?这个和尚说流程不顺、那个和尚说任务分解不合理,这个和尚说部门界面不清、那个和尚说考核力度不够。只有三个人最清楚问题之关键所在,那三个人就是最早的那三个和尚。说来说去,就是***闲人太多了!他们说:“整天瞎分析个屁!什么***流程问题、职责问题、接口问题、考核问题,明明就是机构臃肿问题!早知今日,还不如当初咱们仨自觉自律一点算了!如今倒好,招来了这么一大帮傻B,一个个不干正经事还***人五人六的,跟屎盆子一样甩都甩不掉!”</p>
    <p> </p>
    <p>  又过了一年,寺院黄了,和尚们也都死了。人们在水井边发现了几具尸体,是累死的;在寺院里发现了几千具尸体,是渴死的。</p>
    </body>
    </html>
    <script language="JavaScript" type="text/javascript"><!--
    var keys =  [
    ["和尚","http://www.baidu.com","#ff0000"],
    ["系统","http://www.baidu.com","#00ff00"],
    ["念经","http://www.baidu.com","#0000ff"],
    ["工会","http://www.baidu.com","#cc6600"]
    ]
    var book;
    if(document.createRange){
    var range = document.createRange();
    }else{
    var range = document.body.createTextRange();
    book = range.getBook();
    }
    var key;
    for(var i = 0;key = keys[i];i++){
    if(range.findText){
    range.collapse(true);
    range.moveToBook(book);
    while(range.findText(key[0])){
    range.pasteHTML(range.text.fontcolor(key[2]));
    }
    }else{
    var s,n;
    s = window.getSelection();
    s.collapse(document.body,0);
    while(window.find(key[0])){
    var n = document.createElement("SPAN");
    n.style.color=key[2];
    s.getRangeAt(0).surroundContents(n);
    }
    }
    }
    //--></script>