求这样的一个替换算法。

lovewangya 2009-10-26 10:35:12
就是把一篇文章的关键字替换成相对链接
例如:
张学良 http://xxx.com?p=张学良
张学良将军 http://xxx.com?p=张学良将军
将军 http://xxx.com?p=将军


张学良将军是我十分敬重的一位将军,张学良生于xxx年xx月xx日,
吕正操曾经是张学良的一名副将军
想实现替换之后如下:
<a href=http://xxx.com?p=张学良将军> 张学良将军</a>是我十分敬重的一位将军,<a href=http://xxx.com?p=张学良>张学良</a>生于xxx年xx月xx日,吕正操曾经是张学良的一名副<a href=http://xxx.com?p=将军>将军</a>,

就是实现文章当中的关键字只替换一次,并且像"张学良将军" 必须替换成:<a href=http://xxx.com?p=张学良将军> 张学良将军</a>而不能替换成:
<a href=http://xxx.com?p=张学良将军> <a href=http://xxx.com?p=张学良>张学良</a><a href=http://xxx.com?p=将军>将军</a></a>
不知道有没有好的算法,请大家帮忙分析一下
...全文
147 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
床上等您 2009-10-27
  • 打赏
  • 举报
回复
学习了
lovewangya 2009-10-27
  • 打赏
  • 举报
回复
呵呵,都不错,我仔细看一下,谢谢了
jumpheightway 2009-10-26
  • 打赏
  • 举报
回复
当然有这样的算法

这需要用到很多东西
foolbirdflyfirst 2009-10-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lovewangya 的回复:]
没有搞错我的意思是说:如果文章当中有:

<a href=http://xxx.com?p=张学良将军> 张学良将军 </a>
这个链接

那么关键字:张学良,将军
就不要再去动这个链接里面的内容了。
[/Quote]
没搞明白,我的意思是你的串内出现了两次单独的'将军'两个词,却选择替换第二个出现的'将军',这是和解?
lovewangya 2009-10-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yunfeifan 的回复:]
没有想到好的办法,一个比较笨的办法,首先需要替换的关键字排序按多少,{张学良将军,张学良,将军}

然后替换文本可以用{#0} {#1} {#2}这样的替换上边的,然后把这些{#}的替换成你要的链接加字符,这样可以避免 “张学良将军”这样的词被替换三次。

不知道大家有没有别的好的想法
[/Quote]

对就是您这个意思,继续关注好的算法
lovewangya 2009-10-26
  • 打赏
  • 举报
回复
没有搞错我的意思是说:如果文章当中有:

<a href=http://xxx.com?p=张学良将军> 张学良将军 </a>
这个链接

那么关键字:张学良,将军
就不要再去动这个链接里面的内容了。
yunfeifan 2009-10-26
  • 打赏
  • 举报
回复
没有想到好的办法,一个比较笨的办法,首先需要替换的关键字排序按多少,{张学良将军,张学良,将军}

然后替换文本可以用{#0} {#1} {#2}这样的替换上边的,然后把这些{#}的替换成你要的链接加字符,这样可以避免 “张学良将军”这样的词被替换三次。

不知道大家有没有别的好的想法
itian 2009-10-26
  • 打赏
  • 举报
回复
有组合替换算起来是不是很吃力?

例子中只有两个词,如果词多的话组合就多了(这些还得靠手动组合)。。

然后做正文匹配。。。


这种需求太变态了点。
weijiepeng 2009-10-26
  • 打赏
  • 举报
回复
$str = preg_replace('/张学良将军|张学良(?!将军)|(?<!张学良)将军/e','fxx("$0")',$str);

/e 和$0是什么意思
lovewangya 2009-10-26
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 cayleung 的回复:]
最简单的方法是先提取a标签的内容,然后用个临时的id放在那,然后替换,最后再把临时id替换为a标签,href属性里的中文可以编一下码~~
[/Quote]

不错我按照您的思路测试一下。
cayleung 2009-10-26
  • 打赏
  • 举报
回复
最简单的方法是先提取a标签的内容,然后用个临时的id放在那,然后替换,最后再把临时id替换为a标签,href属性里的中文可以编一下码~~

21,891

社区成员

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

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