替换时的一些问题~请高手帮看看啊!~!

goldboy258 2008-06-26 07:21:37
目的:将$body中的word替换成 <a href="href">word</a>
1 数组$words $hrefs(元素相同)

2 数组中元素替换

3
usort($thearray, 'foo');

function foo($a, $b) {
if(strlen($a) == strlen($b)) return 0;
return strlen($a) < strlen($b) ? -1 : 1;
}

$string = str_replace('\"', '"', $body);
foreach($words as $k => $word){
$abc= '<a href="'.$hrefs[$k].'">'.$word.'</a>';

$string = preg_replace('/'.$word.'/', $abc, $string,3);

}//end foreach



问题出现了:(不知道还有什么意向不到的后果)
1.本来内容中带链接的 也会加上链接 变成了多个a标签套在一起(要能把被A标签包围的字符排除在外,不进行替换操作就好)
(内容<a href="csdn.html">CSDN程序</a>)会变成(内容<a href="a.html">CSDN<a href="code.html">程序</a></a>)

2.如果有重复的话也会多次替换,虽然排序了(从大到小)

3. 1中HTML是(<a href="csdn_code.html">CSDN程序</a>) 如果某个word是 csdn 的话,HTML中就会出现(<a href="<a href="csdn.html">csdn</a>_code.html">CSDN程序</a>)

怎样在替换中不出现这几个问题啊~正则真的头晕啊 郁闷

不知道还有没有其他问题 请高手帮忙啊!~~谢谢啦


...全文
67 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
sd5816690 2008-06-29
  • 打赏
  • 举报
回复
原来回过一个帖子,和LZ的问题差不多,奇怪的是连提问人名字也差不多
http://topic.csdn.net/u/20080612/09/7e7ef4d7-0e8f-4b54-a3a4-5c5717097a52.html

我原来的方法有缺点,
但根据 7楼 的想法,在我原来的方法上改进了一下:
在此谢谢7楼

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE></TITLE>
<script>
var keywords=[];//要替换的部分
var replaces=[];//替换成什么
var signs=[];//特定标记,不用管它

keywords[0]=/诺基亚/g;
keywords[1]=/Google/g;
keywords[2]=/头像/g;

replaces[0]="<a href=\"http://www.nokia.com\">诺基亚 </a>";
replaces[1]="<a href=\"http://www.g.cn\">G.cn </a>";
replaces[2]="<a href=\"/face/\">头像 <a>";

function convertSegment(contentValue){
//设置signs,并替换为signs
for(var i=0; (e = keywords[i]); i++){
signs[i] = "thePartWhichWillBeReplace"+i;
contentValue = contentValue.replace(keywords[i],signs[i]);
}

for(var i = 0; (e = signs[i]); i++){
while(contentValue.indexOf(signs[i]) >= 0){
contentValue = contentValue.replace(signs[i],replaces[i]);
}
}
return contentValue;
}

function convert(){
var content = document.getElementById("contentToConvert").innerHTML;
var arr = content.split("<");
content = "";
for(var i=0; i < arr.length ;i++){
if(!/^[aA] /.test(arr[i]) && arr[i].indexOf("img") != 0 && arr[i].indexOf("IMG") != 0){
arr[i] = convertSegment(arr[i]);
}
content += "<" + arr[i] + "\n";
}
alert(content.substring(1));
document.getElementById("contentToConvert").innerHTML = content.substring(1);
}
</script>

</HEAD>
<BODY onload="convert()">
<div id="contentToConvert">
<p>北京时间6月24日消息,据国外媒体报道, <a href="http://www.nokia.com" title="nokia">诺基亚 </a>将出资2.64亿欧元(约合4.1亿美元)收购智能手机操作系统Symbian剩余的52%股份,并将它完全置于一个诺基亚新成立的开源基金会的管理之下。著名博客作者达纳布兰肯霍恩(Dana Blankenhorn)今天撰文指出,这表明由Google(谷歌)倡导的Android手机平台已给市场带来了冲击。 </p>
<p>头像: <img src="http://profile.csdn.net/dada20042030/picture/2.jpg" alt="我的头像"/> </p>
</div>
</BODY>
</HTML>

ashchen 2008-06-29
  • 打赏
  • 举报
回复
正则切字符串成数组
遍历数组,<a <img 打头的跳过不替换
再合并
ashchen 2008-06-29
  • 打赏
  • 举报
回复
估计是想要php代码

想这样替换的一般是想seo优化,js替换不会有效果,搜索引擎不认js

1再具体一点:
切分用点是 <a></a>|<img>,正则自己想,函数用preg_split
goldboy258 2008-06-28
  • 打赏
  • 举报
回复
例子

内容:
<p>北京时间6月24日消息,据国外媒体报道,<a href="http://www.nokia.com" title="nokia">诺基亚</a>将出资2.64亿欧元(约合4.1亿美元)收购智能手机操作系统Symbian剩余的52%股份,并将它完全置于一个诺基亚新成立的开源基金会的管理之下。著名博客作者达纳布兰肯霍恩(Dana Blankenhorn)今天撰文指出,这表明由Google(谷歌)倡导的Android手机平台已给市场带来了冲击。</p>
<p>头像:<img src="http://profile.csdn.net/dada20042030/picture/2.jpg" alt="我的头像"/></p>

关键字:
1 诺基亚 -> <a href="http://www.nokia.com">诺基亚</a>
2 Google -> <a href="http://www.g.cn">G.cn</a>
3 头像 -> <a href="/face/">头像<a>

需要结果:
<p>北京时间6月24日消息,据国外媒体报道,<a href="http://www.a.com" title="nokia">诺基亚</a>将出资2.64亿欧元(约合4.1亿美元)收购智能手机操作系统Symbian剩余的52%股份,并将它完全置于一个<a href="http://www.nokia.com">诺基亚</a>新成立的开源基金会的管理之下。著名博客作者达纳布兰肯霍恩(Dana Blankenhorn)今天撰文指出,这表明由<a href="http://www.g.cn">G.cn</a>(<a href="www.Google.com">谷歌</a>)倡导的Android手机平台已给市场带来了冲击。</p>
<p><a href="/face/">头像<a>:<img src="http://profile.csdn.net/dada20042030/picture/2.jpg" alt="我的头像" title="我的头像" /></p>

我现在想要的就是
1.排除a标签内的内容替换
2 排除img标签内的替换
3 排除重复替换 比如 谷歌 和谷歌搜索 就只替换一个 这个好像可以排序解决~


剑心永远OK 2008-06-27
  • 打赏
  • 举报
回复
直接发个例子,然后说想要的结果。。
goldboy258 2008-06-26
  • 打赏
  • 举报
回复
怎么没高手经过这啊
goldboy258 2008-06-26
  • 打赏
  • 举报
回复
我一共才发4个帖子 老大~~
刚才把2个都结贴啦!~
goldboy258 2008-06-26
  • 打赏
  • 举报
回复
晕啦 我都结贴了哦 怎么老是回复这个的啊 ?
Domain4.3(明小子)10.10.10更新版主要更新内容如下: 1.驱除部分死连接,恢复部分官方连接 2.改变默认显示页面为本人BLOG 3.修正程序在检测出错的BUG 4.修正程序在部分系统中无法启动的BUG 5.加了一个功能模块,但还不成熟,隐藏了,高手的话可以用OD调出来!>!< 6.修复前段间一些朋友反映的错误和程序宏 7.增加四款SKN皮肤! 10.10.11紧急更新: 1.修正新版程序在部分系统中启动后直接导致系统蓝屏的BUG 2.修正域名查询的几个错误 3.修正程序批量检测查询到域名的候无反映的BUG! Domain4.2(明小子)10.01.16更新版主要更新内容如下: 1.删除所有无关数据 2.优化急速代码 3.改变启动线程 4.增加SQL数据批量导出功能 5.加入几个优化进程模块,非后门.后台运行. 6.锁定主程序栏目宽和高,不在恢复 7.删除“辅助工具”模块中全部代码 8.修正XP SP3 程序下兼容问题 9.重新改写域名查询旁站线程 程序于2010年01月16号调试完毕! 提别提示:第4个功能只能运行在完整版的windows XP 平台系统中,其他平台无法运行,如果出现恢复按钮并不能保存自行调试与本程序无关.谢谢合作! 宝宝的话:有朋友们的鼓励才会有这个版本的发布,这当是我送给大家2010年里的第一个礼物吧。 Domain4.1(明小子)0901更新版主要更新内容如下: 1.增加新系统兼容模块,全面兼容2000-2008各系统 (部分精简版系统除外) 2.优化网站打开速度,删减部分无用内核信息,全面加快程序启动速度. 3.基于09.05.20号内核提升,改变搜查循环的一个死BUG! 4.删除在0520上增加的一个补针函数,并使用新的函数替换.保证不报错. 5.不在兼容xpsp3,因为没间去修正这个错误。所以可能部分SP3系统运行不起来本程序 6.增加部分程序扩充空格代码,为下个版本更新做好铺垫 小提示:保留旧的IP反查连接系统,原因没有找到新的和稳定的IP反差服务器!如果有能提供的与本人联系!谢谢合作 Domain4.1(明小子)0520更新版主要更新内容如下: 1.基于08.10.01号内核提升,修正一次关键错误。 2.替换原程序自带的那个小马,该为最新美化免杀版的小马! 3.添加一个服务器挂钩程序(非插件),使修改后的新内核兼容vista系统。 4.程序数据库默认名为:SetData.mdb 大家使用3.5版本以上的MDB数据.其他低版本程序可能不兼容! 5.删除后台下载统计代码(以前没发现,本人也是从网站上面下的软件,排除作者自添加行为) 6.加了一个补针,针对sql注入功能中的一个小BUG。 7.删除了很多没有用的代码,最大限度的优化程序启动速度。 8.更新部分在xpsp3下出错的几个小BUG(小问题小解决,这个错误仅针对部分优化过度的XPSP3系统)。 提记:很多朋友说需要修改下程序IP域名查询功能,这里说明下.由于内核找不到关键句柄导致无法更新,下个版本在仔细看看! Domain4.0(明小子)1001更新版主要更新内容如下: 1.更新部分过度优化过的系统不兼容问题。 2.修改内存识别函数,使其降低软件在使用期间所占用的内存大小。 3.基于08.09.15号内核提升,修正因修改软件所出现的几个导致软件崩溃的几个BUG。 4.换了软件自带的那个垃圾皮肤。加入兼容美化皮肤!更美观! 5.兼容前版本数据库支持功能 6.去掉了没有用的PHP入侵选项和几处小BUG...... 转贴是一种美德!分享也是一种快乐,工具仅做辅助作用勿用在非法用途上! 程序自带本BLOG连接,启动比较慢!不喜勿用!谢谢合作!
扩展功能: a. 首先满足网友的”口味”, 重新设计了所有旗子, 选择新的旗盘背景, 换了一个更清爽的面. (界面配色并不是件很容易的事情, 这样的棋类游戏长间容易使眼睛疲劳, 首先要做到选择的色彩 不刺激眼睛,其实大部分色彩都比较刺激眼睛,尤其是纯三基色(红/黄/蓝), 还要使界面做得漂亮). b. 增加”回放” 功能. 当下完旗子,可以重新回味一下, 刚杀完的一盘旗,可以寻找不足和重新感受 一下胜利的喜悦! 这个功能比较复杂! d. 又看了一下电脑走旗, 感觉确实比较难处理, 没有高人指点写这个算法确实比较难, 应该比以前聪明 了一些, 但是还是比较笨, 打算有空去找个现在的电脑走旗组件替换上, 自己的电脑走旗算法慢慢研 究(当是因为实在找不到现在的组件, 自己写了个较笨的,如果哪位朋友能够提供组件,在次深表感谢!!!). e. 扩展走旗的步数容量, 有些网友, 对战的都是高手, 产生数组越界, 这次从 200 扩展到了500, 当然 您还可以扩展到更大,因为源代码已经开放). f. 增加图像缓存功能. g. 解决 .net 从framework 1.0到framework 2.0升级出现的程式升级逻辑问题及一个小bug. h. 本来我只是想把这个程式放到Blog上, 供爱好c#的网友学习,一起交流一下, 没想到反应那么的强烈! 经常收到网友的反馈邮件, 从下载量看,不到一年仅从我的下载空间(不算网友转载下载次数)就有近 二万五千次. 所以又重新看懂已经基本忘记的代码,修复了bug,并扩展了以上功能. 有可能还会增加一些功能! 另外,在此对给我提交建议和bug的朋友表示感谢!!! (开发语言: C#语言) 来自:http://community.csdn.net/Expert/topic/5237/5237003.xml?temp=.4600031

21,886

社区成员

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

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