2012-03-18 118 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

相關問題