正则表达式 - php正则替换怎么同时排除多个特定的标签?
PHP中文网
PHP中文网 2017-04-11 09:08:28
[PHP讨论组]

比如有一段文本:

核桃树用什么树嫁接w.jpg

桃树,又名胡桃树、属胡桃科植物,品种分为野生山核桃和人工嫁接改良品种核桃。原产于中亚地带,中国各地均有种植,一般选择种植人工改良后的品种,因为改良后的品种要比野生的品种产量高,壳薄,俗称泡核桃。野生的壳厚、个大、油多等特点,吃起来较香,俗称铁核桃。

核桃树用什么树嫁接c.jpg


一般只有同科同属的植物,相互嫁接效果才好,例如:李树、桃数 橘子树都可以 作为嫁接植物。
嫁接 核桃树最好的是:
1、实生核桃(核桃种子播种出的苗) 苗木嫁接。
2、胡桃科核桃楸属可嫁接,如常见的核桃楸(山核桃),但容易出现小脚现象(砧木细,嫁接口以上粗)。
3、胡桃科枫杨属(南方),也可嫁接 核桃
总之核桃属之间的不同树种嫁接最好,亲和力强、适应能力强、丰产效果好。

核桃树用什么树嫁接.jpg


嫁接完成,接芽上部保留3片复叶,剪掉上部枝梢;嫁接的芽片萌发出3-5公分,就应该剪掉接芽上部枝叶,促进接芽迅速萌发生长。其他未嫁接新稍适当控制生长,以便集中营养促进嫁接萌发的新稍健壮成熟。早实核桃嫁接当年形成花芽,第二年正常结果。

我想替换里面的一个独立的文本中的关键词“核桃”为一个链接,同时要排除a标签或img的alt中的文本等可能出现“核桃”的地方,排除一个好办,但同时排除多个好像比较麻烦,哪位有比较好的解决方案?

下面是我的只过滤非a标签里的代码,但如果图片的alt里有还是会出问题。

$article['content'] = preg_replace('/(?!.*?)核桃(?![^<]*<\/a>)/i','核桃',$article['content'],1);
PHP中文网
PHP中文网

认证0级讲师

全部回复(1)
巴扎黑

想到一个办法。
我们先匹配出我们不需要修改的内容。也就是a标签。将a标签全部取出并换成不重复的占位符,例如 A:01, 然后我们全局替换我们要换的。替换后再用我们之前取出来的A标签数组来循环将占位符替换回真实的A标签内容。题主你说我是不是机智的Boy啊?:)

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号