2012-03-18 124 views
2

我对PHP很新,并且有一个包含HTML页面的字符串。我需要插入一些自定义代码之前和之后的任何HR HTML标记。例如:PHP在字符串之前和之后插入一些文本

<html> 
    .... 
    <p>INSERT HERE</p> 
    <hr class="pagebreak"> 
    <p>INSERT HERE</p> 

    <p>INSERT HERE</p> 
    <hr class="pagebreak"> 
    <p>INSERT HERE</p> 
    .... 
    </html> 

我试着的preg_replacesubstr_replace的几种组合,但我仍然无法管理,我需要所有的地方插入自定义代码。 任何人都可以帮助我解决这个难题? P.s.我需要使用PHP标准字符串函数 - 我无法使用任何HTML解析库,因为我无法控制服务器上可用的PHP库。 非常感谢 琳达

回答

2

所有你需要得到的是良好的正则表达式,假设你设法得到它至少部分地工作,你propably有坏的表达(例如将帮助)。我测试此代码对你应该在你的所有<hr>的工作:

$newtext=preg_replace("#(<hr[^>]*>)#s",$yourprefix."\${1}".$yoursuffix,$oldtext); 

变量oldtext是你有过什么,新的文本是你想要的,和前缀和后缀是要围绕小时加什么标签

+0

非常感谢您,您的解决方案和inhan工作人员都非常完美。对不起,我刚刚构建了我的个人资料,因此我无法为您的回复添加任何分数:-( – 2012-03-18 18:13:38

+0

没问题,至少你有解决方案,只需注意差异,即使'


'需要多行,大小写不敏感,所以它不会为'
'工作,如果你想改变它,只需把'​​#i'代替 – Kyborek 2012-03-18 19:41:57

1
$before = '<p>Before the hr tag</p>'; 
$after = '<p>After the hr tag</p>'; 

$str = preg_replace('/(<hr(.*?)>)/i',$before.'$1'.$after,$str); 
+0

谢谢你的建议inhan! – 2012-03-18 18:13:56

+0

不客气。 – inhan 2012-03-18 22:08:04

相关问题