首頁 > 後端開發 > php教程 > 正则如何匹配第一个的</p>和最后一个</p>

正则如何匹配第一个的</p>和最后一个</p>

WBOY
發布: 2016-06-23 14:12:56
原創
1554 人瀏覽過

比如文章如下

1111111


2222222


33333333


4444444


55555555


66666666


7777777



匹配出

1111111

中的
和最后一段

7777777


正则如何弄?

回复讨论(解决方案)

preg_match_all('/^

.+|

.+$/U',$s,$m);

preg_match_all('/^

.+|

.+$/U',$s,$m);
这样匹配到的是整一段了
我要的只是一个

preg_match_all('/^

.+()|

.+()$/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;preg_match('#(</p>).+(</p>)#s', $s, $r);print_r($r);
登入後複製
Array
(
[0] =>


2222222


33333333


4444444


55555555


66666666


7777777


[1] =>


[2] =>


)

如果只是想要匹配

的话,可以不用正则吧。
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);
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製

别用正则了

<?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);print stripos($s,'</p>');print strripos($s,'</p>');?>运行结果:11310109
登入後複製

如果只是想要匹配

的话,可以不用正则吧。
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, '

');
楼上兄弟和我想一样了


如果只是想要匹配

的话,可以不用正则吧。
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, '

');
楼上兄弟和我想一样了
其实我是要第一段的后面追加一些文字、和最后一段也追加一些文字

$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);
登入後複製

1111111

aaa

2222222


33333333


4444444


55555555


66666666


7777777

BBB




如果只是想要匹配

的话,可以不用正则吧。
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, '

');
楼上兄弟和我想一样了
其实我是要第一段的后面追加一些文字、和最后一段也追加一些文字



如果只是想要匹配

的话,可以不用正则吧。
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, '

');
楼上兄弟和我想一样了
其实我是要第一段的后面追加一些文字、和最后一段也追加一些文字
也可以使用这种啊,得出了两个'

'的位置,在把字符切一下再加上你要加的文字。
不过如果字符串本身很大的话,这个效率不怎么样。




如果只是想要匹配

的话,可以不用正则吧。
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, '

');
楼上兄弟和我想一样了
其实我是要第一段的后面追加一些文字、和最后一段也追加一些文字
也可以使用这种啊,得出了两个'

'的位置,在把字符切一下再加上你要加的文字。
不过如果字符串本身很大的话,这个效率不怎么样。

不用切,找出位置直接替换就可以
<?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;
登入後複製
登入後複製





如果只是想要匹配

的话,可以不用正则吧。
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, '

');
楼上兄弟和我想一样了
其实我是要第一段的后面追加一些文字、和最后一段也追加一些文字
也可以使用这种啊,得出了两个'

'的位置,在把字符切一下再加上你要加的文字。
不过如果字符串本身很大的话,这个效率不怎么样。

不用切,找出位置直接替换就可以
<?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;
登入後複製
登入後複製

这个可以

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板