0

我有一个包含多个段落的字符串:

$string  = '<p>I am the firt para.</p><p>I am a second para</p>';   

$more = '<a href="#">more</a>';

如何在 $string 中添加$ more字符串,就在最后一段结束之前,并得到如下内容:

$string = '<p>I am the firt para.</p><p>I am a second para <a href="#">more</a></p>';

有任何想法吗?

4

3 回答 3

0
$pos = strrpos($string, "</p>");     //find last entrance of "</p>"
$string = substr($string, 0, $pos) . $more . substr($string, $pos);
于 2013-09-05T22:42:37.910 回答
0

我最初的想法

<?php
$string  = '<p>I am the firt para.</p><p>I am a second para</p>';   

$more = ' <a href="#">more</a></p>';


$new=substr($string, 0, -4);
$done=$new.$more;

echo $done; // <p>I am the firt para.</p><p>I am a second para <a href="#">more</a></p>
于 2013-09-05T22:43:50.177 回答
0

如果你想用正则表达式来做,它可能看起来像这样:

$string  = '<p>I am the firt para.</p><p>I am a second para</p>';   
$more = '<a href="#">more</a>';
echo preg_replace('|</p>$|im', $more.'</p>', $string);

在这里在线测试:http: //sandbox.onlinephpfunctions.com/code/54bcaf41afe037fc9b5b75d869242378b257db4e

正则表达式使用 a$来匹配字符串的结尾。该i标志使其不区分大小写,以防有人有大写字母</P>m标志用于多行。

编辑:只想注意这可能是最慢的方法 - 使用str*其他答案中的函数要快得多。

于 2013-09-05T22:48:59.540 回答