之前看你恢复了这个帖子,http://bbs.csdn.net/topics/330097621,是关于正则替换的我我类似的问题,关键词1 <a href="11" class="keyword" target="_blank">关键词1 </a> sdfaj 关键词1 关键词2
关键词2 <a href="11" class="keyword" target="_blank">关键词2 </a> sdfaj 关键词2 关键词1
我只想替换一段文本中<a></a>之外的关键词 ,每个关键词之需要替换2次即可aaa <a href="11" class="keyword" target="_blank">关键词1 </a> sdfaj aaa bbb
bbb <a href="11" class="keyword" target="_blank">关键词2 </a> sdfaj 关键词2 关键词1关键词替换
关键词2 <a href="11" class="keyword" target="_blank">关键词2 </a> sdfaj 关键词2 关键词1
我只想替换一段文本中<a></a>之外的关键词 ,每个关键词之需要替换2次即可aaa <a href="11" class="keyword" target="_blank">关键词1 </a> sdfaj aaa bbb
bbb <a href="11" class="keyword" target="_blank">关键词2 </a> sdfaj 关键词2 关键词1关键词替换
先使用preg_replace 结合 limit参数把关键字都替换
再把不需要替换的部分换回来但因为不清楚有多少个<a>,limit很难把握
建议还是用while,遇到关键字判断一下是否在<a>内再决定替换,满足两次就break
关键词1 <a href="11" class="keyword" target="_blank">关键词1 </a> sdfaj 关键词1 关键词2
关键词2 <a href="11" class="keyword" target="_blank">关键词2 </a> sdfaj 关键词2 关键词1
html;
$p = array( '#(?=[^>]*(?=<(?!/a>)|$))关键词1#', '#(?=[^>]*(?=<(?!/a>)|$))关键词2#' );
$r = array( 'aaa', 'bbb');
echo preg_replace($p, $r, $html, 2);
aaa <a href="11" class="keyword" target="_blank">关键词1 </a> sdfaj aaa bbb
bbb <a href="11" class="keyword" target="_blank">关键词2 </a> sdfaj 关键词2 关键词1
谢谢你的解答,很好用。
就是本人不懂正则,看不懂什么意思
如果能解释一下“#(?=[^>]*(?=<(?!/a>)|$))关键词1#”的每部分意思就更好了