2011-04-03 15 views
1

此問題似乎很簡單,但我不能在網絡上跨越它爲例來...PHP正則表達式:匹配不以HTML標籤開頭的行嗎?

我試圖創建的preg_replace這需要在一個時間線,並提出<p>標記左右,如果它不是已經開始一個HTML字符。

例如, 本款成爲<p>this paragraph</p>

<code>this content</code>保持不變,沒有<p>標籤被周圍放。

什麼是最簡單的方法來實現這一目標?

回答

3

你可以嘗試的^線起始標記(?!..)negative assertion後:

$text = preg_replace('#^(?!<[a-z]).*$#m', '<p>$0</p>', $text); 

但是,它沒有測試一個完整的標籤。假設已經有<x的標籤存在。

+0

有沒有什麼理由比'^([^ <]。]更喜歡'^(?!<[a-z])'? – Dancrumb 2011-04-03 19:22:35

+0

不,這對於這個簡單的任務來說也是一個選項。斷言檢查兩個主要字符,所以更具體一點。但這只是一種最好的猜測方法。 – mario 2011-04-03 19:39:30

+0

這就是我錯過的一個詞,「否定的斷言」......我無法弄清楚如何說:匹配一條線_doesn't_以特定字符開頭......感謝您的幫助 – jchmski 2011-04-05 16:27:26

相關問題