> 백엔드 개발 > PHP 튜토리얼 > 正则问题求教

正则问题求教

WBOY
풀어 주다: 2016-06-23 14:17:13
원래의
989명이 탐색했습니다.

<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('/<dd>(.*?)(?:<\!\-\-.*?\-->)(.*?)<\/dd>/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这个函数,真是方便多了。

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿