试试这段代码:$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;
$html = 网页文件内容;
foreach($aa as $line){
$html = preg_replace("/($line)/","<font color='#ff0000'>\\1</font>",$html);
}
echo $html;
$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;
?>
用数组记录该关键字是否已经替换过了
$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;
?>
关键词“我”出现了三次,关键词“的”出现了三次,关键词“问题”出现了两次。
我想只让他们一个之出现一次。呵呵!还得麻烦你看看
你们都没有注意到:
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;
?>
关键字数组
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表示可以是多种类型的数据,当然也就可以是数组