帮忙正则匹配的问题

fjxmcyh 2009-08-03 11:49:26
最近在学PHP,现在有个字符串,里面的内容是这样的:
<p>这里是字符串。字符串。字符串。</p>
<p>这里是字符串。字符串。字符串。</p>
<p>这里是字符串。字符串。字符串。</p><p>这里是字符串。字符串。字符串。</p>
<p>这里是字符串。字符串。字符串。</p>
<p>这里是字符串。字符串。字符串。</p>
<p>这里是字符串。字符串。字符串。</p>

就是都是这样构成的,<p>标签里面有字符,然后中文的句号。想取前3个<p>标签的第一个句号的内容,请问要怎么写正则来匹配,各位大哥大姐,谢谢了。
...全文
72 点赞 收藏 12
写回复
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
huarc 2009-08-04
<p>这里是字符串。字符串。字符串。 </p>

preg_match_all("/<p>^(.*)\。(.*)\。(.*)\。<\/p>/", $str, $matches);
只取$matches[1]就可以了
回复
hehe2006jian 2009-08-04
[Quote=引用 4 楼 jakey9826 的回复:]
取出所有的,放到数组里,你可以取数组的前三个就是了.
PHP code$str=<<<TEST<p>这里是字符串。字符串。字符串。</p><p>这里是字符串。字符串。字符串。</p><p>这里是字符串。字符串。字符串。</p><p>这里是字符串。字符串。字符串。</p><p>这里是字符串。字符串。字符串。</p><p>这里是字符串。字符串。字符串。</p><p>这里是字符串。字符串。字符串。</p>
TEST;preg_match_all("/<p>([^。]+).*?<\/p>/",$str,$matches);var_dump($matches);
[/Quote]

学习... ...
回复
fjxmcyh 2009-08-04
搞定了,结贴,谢谢啦
回复
总哈哈 2009-08-04
楼上强人!
回复
程序猿之殇 2009-08-04
取出所有的,放到数组里,你可以取数组的前三个就是了.
$str = <<<TEST
<p>这里是字符串。字符串。字符串。 </p>
<p>这里是字符串。字符串。字符串。 </p>
<p>这里是字符串。字符串。字符串。 </p> <p>这里是字符串。字符串。字符串。 </p>
<p>这里是字符串。字符串。字符串。 </p>
<p>这里是字符串。字符串。字符串。 </p>
<p>这里是字符串。字符串。字符串。 </p>
TEST;
preg_match_all("/<p>([^。]+).*?<\/p>/", $str, $matches);
var_dump($matches);
回复
fjxmcyh 2009-08-04
对,就是每个<p></p>之间的开始到第一个句号之间的内容,各位老大,帮帮忙啊
回复
blueforyou 2009-08-04
"...第一个句号的内容"?是这个句号之前的?
回复
YHL27 2009-08-04
sf!!
回复
fjxmcyh 2009-08-04
[Quote=引用 9 楼 jakey9826 的回复:]
引用 8 楼 fjxmcyh 的回复:
引用 4 楼 jakey9826 的回复:
取出所有的,放到数组里,你可以取数组的前三个就是了.
PHP code$str= < < <TEST <p>这里是字符串。字符串。字符串。 </p> <p>这里是字符串。字符串。字符串。 </p> <p>这里是字符串。字符串。字符串。 </p> <p>这里是字符串。字符串。字符串。 </p> <p>这里是字符串。字符串。字符串。 </p> <p>这里是字符串。字符串。字符串。 </p> <p>这里是字符串。字符串。字符串。 </p>
TEST;preg_match_all("/ <p>([^。]+).*? <\/p>/",$str,$matches);var_dump($matches);


我是想取出每个 <p> </P>里面的第一个句号之前的内容,就是说第一个 <p> </p>标签的取过后就跳到下一个 <p> </p>去取数据了,也是取第一个句号之前的,然后取3段后拼起来就可以了,还有种可能是 <p> </p>可能都没3个,继续帮忙下啊

都已经按照条件取出来了,你自己操作一下数组就OK了.
[/Quote]

这个是把所有的数据都取出来了,不是只取第一个句号前的数据,再帮忙看看吧
回复
aimie 2009-08-04
/<p>.*?。/
第一个p标记和句号之间的内容.
回复
程序猿之殇 2009-08-04
[Quote=引用 8 楼 fjxmcyh 的回复:]
引用 4 楼 jakey9826 的回复:
取出所有的,放到数组里,你可以取数组的前三个就是了.
PHP code$str= < < <TEST <p>这里是字符串。字符串。字符串。 </p> <p>这里是字符串。字符串。字符串。 </p> <p>这里是字符串。字符串。字符串。 </p> <p>这里是字符串。字符串。字符串。 </p> <p>这里是字符串。字符串。字符串。 </p> <p>这里是字符串。字符串。字符串。 </p> <p>这里是字符串。字符串。字符串。 </p>
TEST;preg_match_all("/ <p>([^。]+).*? <\/p>/",$str,$matches);var_dump($matches);


我是想取出每个 <p> </P>里面的第一个句号之前的内容,就是说第一个 <p> </p>标签的取过后就跳到下一个 <p> </p>去取数据了,也是取第一个句号之前的,然后取3段后拼起来就可以了,还有种可能是 <p> </p>可能都没3个,继续帮忙下啊
[/Quote]
都已经按照条件取出来了,你自己操作一下数组就OK了.
回复
fjxmcyh 2009-08-04
[Quote=引用 4 楼 jakey9826 的回复:]
取出所有的,放到数组里,你可以取数组的前三个就是了.
PHP code$str=<<<TEST<p>这里是字符串。字符串。字符串。</p><p>这里是字符串。字符串。字符串。</p><p>这里是字符串。字符串。字符串。</p><p>这里是字符串。字符串。字符串。</p><p>这里是字符串。字符串。字符串。</p><p>这里是字符串。字符串。字符串。</p><p>这里是字符串。字符串。字符串。</p>
TEST;preg_match_all("/<p>([^。]+).*?<\/p>/",$str,$matches);var_dump($matches);
[/Quote]

我是想取出每个<p></P>里面的第一个句号之前的内容,就是说第一个<p></p>标签的取过后就跳到下一个<p></p>去取数据了,也是取第一个句号之前的,然后取3段后拼起来就可以了,还有种可能是<p></p>可能都没3个,继续帮忙下啊
回复
发动态
发帖子
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
社区公告
暂无公告