关于关键词变红问题!

fengzheng12345 2006-11-01 11:48:27
$a = array($tok[0], $tok[1], $tok[2]);

$b = array("<font color=red>$tok[0]</font>", "<font color=red>$tok[1]</font>", "<font color=red>$tok[2]</font>");

$body=str_replace($a, $b,$body);


问题如下:
我想让每个关键词只变红一次,不要上面我写的,只要是符合的关键词就全都变红。

我应该怎么办?
...全文
590 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengzheng12345 2006-11-09
  • 打赏
  • 举报
回复
谢谢唠叨。给分!
aceblues 2006-11-03
  • 打赏
  • 举报
回复
还是唠叨好,为人民服务
xuzuning 2006-11-02
  • 打赏
  • 举报
回复
$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表示可以是多种类型的数据,当然也就可以是数组
deninghe 2006-11-02
  • 打赏
  • 举报
回复
mark
gu1dai 2006-11-02
  • 打赏
  • 举报
回复

大家谁解释一下?

-----------
这么懒 , 打pp
fengzheng12345 2006-11-01
  • 打赏
  • 举报
回复
谢谢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 。。。
zysoft17 2006-11-01
  • 打赏
  • 举报
回复
试试这段代码:

$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;
fengzheng12345 2006-11-01
  • 打赏
  • 举报
回复
大家谁知道?谢谢了
wildlily980 2006-11-01
  • 打赏
  • 举报
回复
手册,正则部分。
fengzheng12345 2006-11-01
  • 打赏
  • 举报
回复
大家谁解释一下?
fengzheng12345 2006-11-01
  • 打赏
  • 举报
回复
我是很弱。呵呵
easyroom 2006-11-01
  • 打赏
  • 举报
回复
真弱,
fengzheng12345 2006-11-01
  • 打赏
  • 举报
回复
谢谢。。问题解决了,就是没看明白写的是什么意思?呵呵!还要好好研究一下。。。
xuzuning 2006-11-01
  • 打赏
  • 举报
回复
这样写!
你们都没有注意到:
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;
?>
yunfeifan 2006-11-01
  • 打赏
  • 举报
回复
$html = preg_replace("/($line)(.+)/s","<font color='#ff0000'>\\1</font>\\2",$html);
fengzheng12345 2006-11-01
  • 打赏
  • 举报
回复
zysoft17。。

$key = array(0=>"的", 1=>"问题", 2=>"我");你看一下结果!


关键词“我”出现了三次,关键词“的”出现了三次,关键词“问题”出现了两次。


我想只让他们一个之出现一次。呵呵!还得麻烦你看看
fengzheng12345 2006-11-01
  • 打赏
  • 举报
回复
太感谢了,我先试一下!
zysoft17 2006-11-01
  • 打赏
  • 举报
回复
估计这段代码的性能应该也不差吧.
zysoft17 2006-11-01
  • 打赏
  • 举报
回复
好不容易, 成功的代码如下:

<?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;
?>
fengzheng12345 2006-11-01
  • 打赏
  • 举报
回复
zysoft17(瓷匠),可以告诉我应该怎么算吗?我没是没办法,必须得这样做。
加载更多回复(7)

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧