正则问题求教

php中文网
发布: 2016-06-23 14:17:13
原创
1102人浏览过

<dl class="w1" style="width:500px"><dt>转正工资:</dt><dd>2000-3000元<!--2000-3000元/月  -->,试用期薪资60%</dd></dl>
登录后复制



我想取

..
之间非中的内容,用[^...]好像不好写,我知道可以先把中内容替换掉再进行匹配。除此外有没有只用一个正则就能匹配成功的?

回复讨论(解决方案)

/<dd>(.*?)(?:<\!\-\-.*?\-->)(.*?)/ius
登录后复制

/<dd>(.*?)(?:<\!\-\-.*?\-->)(.*?)<\/dd>/ius
登录后复制

先匹配出来,然后再替换掉可能效率还高一些。

chinmo你这个正则我怎么试不成功,你测试了吗

$s=<<(.+?)<\!--.+?-->(.+?)<\/dd>/s',$s,$m);echo $m[1].$m[2];
登录后复制

2000-3000元

,试用期薪资60%

chinmo你这个正则我怎么试不成功,你测试了吗
那我不知道你怎么测试的了

$s='


转正工资:

2000-3000元

,试用期薪资60%

';
preg_match('/
(.*?)(?:)(.*?)/ius',$s,$m);
echo $m[1].$m[2];

反正我测试的没问题

$s='<dl class="w1" style="width:500px"><dt>转正工资:</dt><dd>2000-3000元<!--2000-3000元/月  -->,试用期薪资60%</dd></dl>';preg_match('/<dd>(.*?)(?:<\!\-\-.*?\-->)(.*?)<\/dd>/ius',$s,$m);echo $m[1].$m[2];
登录后复制

结果截图:

preg_match("/(.*?)(.*?)/", $str,$arr);
echo $arr[2];

/

(.*?)(?:)(.*?)/is
u 修饰符只对 utf-8 编码数据有效
况且你也没有对中文进行处理

其实这样不也很简单?
preg_match('/
(.*?)/is',$s,$m);
echo strip_tags($m[1]);

难怪呢,我刚刚是gbk编码,难怪会显示不出来

xuzuning的方法不错,原来PHP还有strip_tags这个函数,真是方便多了。

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

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