怎样用正则匹配不带链接的文字?
Jun 23, 2016 pm 01:28 PM RegEx.Pattern = "(>[^> 这是ASP版本的 PHP用不行
做站内链接功能
需要循环匹配不带链接的文字
比如
我爱CSDN 我爱CSDN,CSDN不爱我
然后中间有 CSDN的 就替换成
CSDN
可能循环替换多次,如果直接替换 就会乱码了
所以求个正则,如果发现是链接和链接内的文字 就不替换
要求是 已替换过的 不再替换 比如 先把 “CSDN不爱我” 替换为链接 然后 再把 剩下的 “CSDN” 替换成链接
把 “CSDN不爱我” 替换了 ,那这句里的 “CSDN” 也不会再被替换
回复讨论(解决方案)
有大神写过给个例子吗?
不清楚,同求
我爱CSDN 我爱CSDN,CSDN不爱我
然后中间有 CSDN的 就替换成
CSDN
如果第二次编辑的时候, href中的csdn不要替换,
没人会吗?急呐
$s =<<< TXT我爱CSDN 我爱CSDN,CSDN不爱我TXT;$p = '/((?:^|>).*?)(CSDN)([^<]*(?:<(?!\/a)|$))/is';$r = '$1<a href="http://bbs.csdn.net/" title="$2">$2</a>$3';do { $t = $s; $s = preg_replace($p, $r, $t);}while($s != $t);echo $s;
$s =<<< TXT我爱CSDN 我爱CSDN,CSDN不爱我TXT;$p = '/((?:^|>).*?)(CSDN)([^<]*(?:<(?!\/a)|$))/is';$r = '$1<a href="http://bbs.csdn.net/" title="$2">$2</a>$3';do { $t = $s; $s = preg_replace($p, $r, $t);}while($s != $t);echo $s;
如果重复次数多了 还是会乱掉
比如 继续替换 我爱 爱我 加上链接
CS加链接
S加链接
我现在用的是笨方法
1、把字符串里的图给换成数组标记
2、把链接也换
3、替换
4、还原图的数组标记
5、还原链接的数组标记
这样就不会乱了 但感觉效率好低啊 版主这个能否再改进下呢?
字符串是

需要依次给
我是文章 文章
都加上链接http://csdn.net 有没办法呢
$abc = '欢迎'; $c='liw5ucms PHP版本即将发布,欢迎大家关注!en <img src="/static/imghw/default1.png" data-src="/images/hh/02.gif" class="lazy" alt="人民" />dfds <img src="/static/imghw/default1.png" data-src="/img/ad.gif" class="lazy" alt="" />dhh呵呵 <a tittle="人民" href="http://www.qiusongsong.com">站长导航</a> 啊哈哈<a href="http://www.5ucms.com">5ucms</a>啊哈哈 <a href="http://qiusongsong.net">邱嵩松</a>tjgad'; echo '原文=<br>'.$c.'<hr>'; echo '替换词=<br>'.$abc.'<hr>'; // 第一步获取字符串里所有图片的正则表达式 preg_match_all("/<img (.*?)\ alt="怎样用正则匹配不带链接的文字?" >/i",$c,$arryimg); $imgtimes = count($arryimg); for($j=0;$j<$imgtimes;$j++){ //读取出符合的关键词名称 $img = $arryimg[0][$j]; $c = str_ireplace($img,'@img['.$j.']@',$c);//替换掉 变成链接 $qimg[$j] = $img;//存入数组 } // 第二步获取字符串里所有超链接的正则表达式 preg_match_all("/<a(.*?)>(.*?)<\/a>/i",$c,$arrya); $atimes = count($arrya); for($j=0;$j<$atimes;$j++){ //读取出符合的关键词名称 $a = $arrya[0][$j]; $c = str_ireplace($a,'@a['.$j.']@',$c);//替换掉 变成链接 $qa[$j] = $a;//存入数组 } echo '去图+链接=<br>'.$c.'<hr>'; // 第三步 按指定次数替换 $c = str_replace($abc,'<a href="http://baidu.com" title="百度" >'.$abc.'</a>',$c);//替换掉 指定次数 变成链接 echo '替换结果=<br>'.$c.'<hr>'; // 第四步 恢复旧的图片 for($i=0;$i<count($qimg);$i++){ $c = str_replace('@img['.$i.']@',$qimg[$i],$c);//替换掉 指定次数 变成链接 } //第五步 恢复旧的链接 for($i=0;$i<count($qa);$i++){ $c = str_replace('@a['.$i.']@',$qa[$i],$c);//替换掉 指定次数 变成链接 } echo '还原结果=<br>'.$c;

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

11 meilleurs scripts de raccourcissement d'URL PHP (gratuit et premium)

Travailler avec les données de session Flash dans Laravel

Construisez une application React avec un Laravel Back End: Partie 2, React

Misque de réponse HTTP simplifié dans les tests Laravel

Curl dans PHP: Comment utiliser l'extension PHP Curl dans les API REST

12 meilleurs scripts de chat PHP sur Codecanyon

Annonce de l'enquête sur la situation en 2025 PHP
