试试这段代码:$aa = array(0=>"A", 1=>"B", 2=>"C");
$html = 网页文件内容;
foreach($aa as $line){
  $html = preg_replace("/($line)/","<font color='#ff0000'>\\1</font>",$html);
}
echo $html;

解决方案 »

  1.   

    谢谢zysoft17(瓷匠),但输出出来的不对阿..输出一些?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>?font color='#ff0000'>146?font color='#ff0000'>?font 
      

  2.   

    刚才调试了一下, 代码正常通过:<?php
    $html = "个人信息设置: 修改个人基本信息、 新设密码、<br>
    新设问题答案、 修改email、 注册条款 <br> 
    社区: 社区、 我的问题、 我得分的问题、 我参与的问题、<br>
    我的信誉分、 我的短消息、 设置自定义社区<br>  
    文档中心: 最新文档、 发表文章  <br>
    求职: 维护我的简历<br>  
    系统功能: 帮助 ";$key = array(0=>"email", 1=>"修改个人", 2=>"文");foreach($key as $line){
      $html = preg_replace("/($line)/","<font color='#ff0000'>\\1</font>",$html);
    }echo $html;
    ?>
      

  3.   

    谢谢zysoft17(瓷匠),可以正常输出。但有一个问题,根据你上面的例子,“文档中心: 最新文档、 发表文章”中的“文”字都变红了,我只想让一个变红。
      

  4.   

    用str_replace来替换
    用数组记录该关键字是否已经替换过了
      

  5.   

    嗬嗬!是要变红。但是我只是需要每一个关键词只变红一次!例如:上面有一个“文”字关键词,但输出的有三个“文“都变红了,我只要一个“文“变红,其余两个不变红?谢谢zysoft17
      

  6.   

    zysoft17(瓷匠),可以告诉我应该怎么算吗?我没是没办法,必须得这样做。
      

  7.   

    好不容易, 成功的代码如下:<?php
    $html = "个人信息设置: 修改个人基本信息、 新设密码、<br>
    新设问题答案、 修改email、 注册条款 <br> 
    社区: 社区、 我的问题、 我得分的问题、 我参与的问题、<br>
    我的信誉分、 我的短消息、 设置自定义社区<br>  
    文档中心: 最新文档、 发表文章  <br>
    求职: 维护我的简历<br>  
    系统功能: 帮助 ";$key = array(0=>"email", 1=>"修改个人", 2=>"文");foreach($key as $line){
      $html = preg_replace("/($line)(.+)/","<font color='#ff0000'>\\1</font>\\2",$html);
    }echo $html;
    ?>
      

  8.   

    zysoft17。。$key = array(0=>"的", 1=>"问题", 2=>"我");你看一下结果!
    关键词“我”出现了三次,关键词“的”出现了三次,关键词“问题”出现了两次。
    我想只让他们一个之出现一次。呵呵!还得麻烦你看看
      

  9.   

    $html = preg_replace("/($line)(.+)/s","<font color='#ff0000'>\\1</font>\\2",$html);
      

  10.   

    这样写!
    你们都没有注意到:
    1、preg_replace 有替换次数的指定吗
    2、preg_replace 可以接受数组做参数吗<?php
    $html = "个人信息设置: 修改个人基本信息、 新设密码、<br>
    新设问题答案、 修改email、 注册条款 <br> 
    社区: 社区、 我的问题、 我得分的问题、 我参与的问题、<br>
    我的信誉分、 我的短消息、 设置自定义社区<br>  
    文档中心: 最新文档、 发表文章  <br>
    求职: 维护我的简历<br>  
    系统功能: 帮助 ";$key = array(0=>"的", 1=>"问题", 2=>"我");array_walk($key, create_function('&$t', '$t = "/$t/";'));$html = preg_replace($key, '<font color=red>$0</font>', $html, 1);
    echo $html;
    ?>
      

  11.   

    $key = array(0=>"的", 1=>"问题", 2=>"我");
    关键字数组
    array_walk($key, create_function('&$t', '$t = "/$t/";'));array_walk 对数组中的每个成员应用用户函数
    因为preg_* 函数都需要 /..../ 形式的规则串,而给出的关键字数组中不是
    所以要加上
    其中create_function('&$t', '$t = "/$t/";')动态创建一个函数,供array_walk使用
    你也可以写成静态的,
    function foo(&$t) {
      $t = "/$t/";
    }
    array_walk($key, 'foo'));
    见array_walk函数说明
    $html = preg_replace($key, '<font color=red>$0</font>', $html, 1);mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit] )
    在 subject 中搜索 pattern 模式的匹配项并替换为 replacement。如果指定了 limit,则仅替换 limit 个匹配,如果省略 limit 或者其值为 -1,则所有的匹配项都会被替换。
    php函数的原型声明中,类型mixed表示可以是多种类型的数据,当然也就可以是数组