免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2445 | 回复: 8
打印 上一主题 下一主题

tags替换文本 怎么用正则判断已经是超级连接 就跳过替换 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-12-27 20:12 |只看该作者 |倒序浏览
  1. <?php
  2. $text="软件大撒旦撒phpdasdsadassoft";
  3. $options = array ("软件","php","soft","p");
  4. foreach ($options as $key => $value) {
  5. if(eregi($value,$text)){
  6. $ather="<A onclick=\"tagshow(event, '$value')\" href=\"javascript:void(0);\" target=_self><STRONG>$value</STRONG></A>";
  7. //echo $ather;
  8.   $text=str_replace($value,$ather,$text);
  9. }
  10. }
  11. echo $text;
  12. ?>
复制代码


  1. <A onclick="tagshow(event, '软件')" href="javascri<A onclick="tagshow(event, 'p')" href="javascript:void(0);" target=_self><STRONG>p</STRONG></A>t:void(0);" target=_self><STRONG>软件</STRONG></A>大撒旦撒<A onclick="tagshow(event, '<A onclick="tagshow(event, 'p')" href="javascript:void(0);" target=_self><STRONG>p</STRONG></A>h<A onclick="tagshow(event, 'p')" href="javascript:void(0);" target=_self><STRONG>p</STRONG></A>')" href="javascri<A onclick="tagshow(event, 'p')" href="javascript:void(0);" target=_self><STRONG>p</STRONG></A>t:void(0);" target=_self><STRONG><A onclick="tagshow(event, 'p')" href="javascript:void(0);" target=_self><STRONG>p</STRONG></A>h<A onclick="tagshow(event, 'p')" href="javascript:void(0);" target=_self><STRONG>p</STRONG></A></STRONG></A>dasdsadas<A onclick="tagshow(event, 'soft')" href="javascri<A onclick="tagshow(event, 'p')" href="javascript:void(0);" target=_self><STRONG>p</STRONG></A>t:void(0);" target=_self><STRONG>soft</STRONG></A>
复制代码


当php替换后执行到p 就把原来php的p也替换了 超级连接就乱套了
这个要怎么排除超级连接 不进行替换呢

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
2 [报告]
发表于 2006-12-27 21:35 |只看该作者
如果匹配到了,把替换的字符串依次切割下来,把替换后的也保存起来。
保存到数组,最后再来合并。

论坛徽章:
0
3 [报告]
发表于 2006-12-28 09:15 |只看该作者
原帖由 HonestQiao 于 2006-12-27 21:35 发表
如果匹配到了,把替换的字符串依次切割下来,把替换后的也保存起来。
保存到数组,最后再来合并。

被正则搞晕了 可以写个大概方法不呀

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
4 [报告]
发表于 2006-12-28 09:27 |只看该作者
你会用eregi,那么你可以看不看spliti。

你用你的那些关键词循环切割。
每次切割之后,你用var_dump来进行输出,你可以看到,字符串被成功切割了的。

切割之后,你想怎么就怎么,不会存在php切割之后,还被p切割了。

论坛徽章:
0
5 [报告]
发表于 2006-12-28 14:34 |只看该作者
var_dump输出还是一样的呀
到最后p还是替换php了
我也试了现在切割文字区别文本和关键字 可是到了 替换分割开的文字 再进行关键字切割 就写不下去了
晕哦 看来还是简单点 把关键字 限制一下 按照字符长短排列 最短长度为2
这样也有效率些

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
6 [报告]
发表于 2006-12-28 15:30 |只看该作者
我举一个例子:

软件phpjavascript
你用php切割,那么就是:软件 javascript,中间有一个php了。
你在对剩下的部分切割,php就只是在上级结构出现了,而剩下的两个怎么切割都不关php的事情了。

论坛徽章:
0
7 [报告]
发表于 2006-12-28 15:37 |只看该作者
原帖由 HonestQiao 于 2006-12-28 15:30 发表
我举一个例子:

软件phpjavascript
你用php切割,那么就是:软件 javascript,中间有一个php了。
你在对剩下的部分切割,php就只是在上级结构出现了,而剩下的两个怎么切割都不关php的事情了。

这个是做到了 但是最后怎么组合输出呢
就是在组合输出这里搞晕了

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
8 [报告]
发表于 2006-12-28 15:48 |只看该作者
那就不是我的事情了哦,你自己想办法,好好想一想就可以出来的。

论坛徽章:
0
9 [报告]
发表于 2006-12-29 09:37 |只看该作者
<?php
$text="软件大撒旦撒phpdasdsadassoft";
$options = array ("软件","php","soft","p");
for( $i=0 ; $i < count($options) ; $i ++ ){
$text=str_replace($options[$i],"<{$i}>",$text);
var_dump($text);
echo "<br>";

}
echo "<br>";
echo "<br>";
for( $i=0 ; $i < count($options) ; $i ++ ){
$ather="<A onclick=\"tagshow(event, '{$options[$i]}')\" href=\"javascript:void(0);\" target=_self><STRONG>{$options[$i]}</STRONG></A>";
$text=str_replace("<{$i}>",$ather,$text);
var_dump($text);
echo "<br>";
}
echo "<br>";
echo $text;
?>

有人 用这种 方法解决了 通过先替换关键字
然后在替换文章
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP