首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

正则怎么匹配第一个的</p>和最后一个</p>

2013-06-19 
正则如何匹配第一个的/p和最后一个/p比如文章如下p1111111/pp2222222/pp33333333/pp444

正则如何匹配第一个的</p>和最后一个</p>
比如文章如下
<p>1111111</p>
<p>2222222</p>
<p>33333333</p>
<p>4444444</p>
<p>55555555</p>
<p>66666666</p>
<p>7777777</p>

匹配出<p>1111111</p>中的</p>
和最后一段<p>7777777</p>的</p>
正则如何弄?
[解决办法]
preg_match_all('/^<p>.+<\/p>
[解决办法]
<p>.+<\/p>$/U',$s,$m);
[解决办法]

$s =<<< TXT
<p>1111111</p>
<p>2222222</p>
<p>33333333</p>
<p>4444444</p>
<p>55555555</p>
<p>66666666</p>
<p>7777777</p>
TXT;
echo preg_replace('#(</p>)(.+)(</p>)#s', '$1aaa$2$3BBB', $s);
<p>1111111</p>aaa
<p>2222222</p>
<p>33333333</p>
<p>4444444</p>
<p>55555555</p>
<p>66666666</p>
<p>7777777</p>BBB


引用:
Quote: 引用:

Quote: 引用:

如果只是想要匹配</p>的话,可以不用正则吧。
PHP5,现在应该没有谁用PHP4吧。。。

$str = '<p>1111111</p>
<p>2222222</p>
<p>33333333</p>
<p>4444444</p>
<p>55555555</p>
<p>66666666</p>
<p>7777777</p>';
$fp = stripos($str, '</p>');
$first = substr($str, $fp, 4);
$ep = stripos($str, '</p>');
$end = substr($str, $ep, 4);


写错了,$ep = strripos($str, '</p>');
楼上兄弟和我想一样了

其实我是要第一段的后面追加一些文字、和最后一段也追加一些文字

[解决办法]
引用:
Quote: 引用:

Quote: 引用:

如果只是想要匹配</p>的话,可以不用正则吧。
PHP5,现在应该没有谁用PHP4吧。。。

$str = '<p>1111111</p>
<p>2222222</p>
<p>33333333</p>
<p>4444444</p>
<p>55555555</p>
<p>66666666</p>
<p>7777777</p>';
$fp = stripos($str, '</p>');
$first = substr($str, $fp, 4);
$ep = stripos($str, '</p>');
$end = substr($str, $ep, 4);


写错了,$ep = strripos($str, '</p>');
楼上兄弟和我想一样了


其实我是要第一段的后面追加一些文字、和最后一段也追加一些文字

也可以使用这种啊,得出了两个'</p>'的位置,在把字符切一下再加上你要加的文字。
不过如果字符串本身很大的话,这个效率不怎么样。
[解决办法]
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

如果只是想要匹配</p>的话,可以不用正则吧。
PHP5,现在应该没有谁用PHP4吧。。。

$str = '<p>1111111</p>
<p>2222222</p>
<p>33333333</p>
<p>4444444</p>
<p>55555555</p>
<p>66666666</p>
<p>7777777</p>';
$fp = stripos($str, '</p>');
$first = substr($str, $fp, 4);
$ep = stripos($str, '</p>');
$end = substr($str, $ep, 4);


写错了,$ep = strripos($str, '</p>');
楼上兄弟和我想一样了

其实我是要第一段的后面追加一些文字、和最后一段也追加一些文字

也可以使用这种啊,得出了两个'</p>'的位置,在把字符切一下再加上你要加的文字。
不过如果字符串本身很大的话,这个效率不怎么样。


不用切,找出位置直接替换就可以

<?php 
$s='<p>1111111</p>
<p>2222222</p>
<p>33333333</p>
<p>4444444</p>
<p>55555555</p>
<p>66666666</p>
<p>7777777</p>';
print strlen($s);

$find = '</p>';
$find_len = 4; //</p> 长度

$s = substr_replace($s, $find."第一个p", stripos($s,'</p>'), $find_len);
$s = substr_replace($s, $find."最后一个p", strripos($s,'</p>'), $find_len);

print $s;

热点排行