2012-12-24 78 views
2

我正在尋找解決方案來驗證提交的帖子。我想,以檢查是否有人提出(中職):使用preg_replace檢查多個模式?

  • 一個的iframe嵌入YouTube或Vimeo的視頻,替換I幀
  • 使用的URL正確的寬度,通過HTML可點擊的鏈接取代
  • 圖像URL,通過HTML

我能夠找到正確的正則表達式的每一個的這些要求更換,但用3個單獨的preg_replace功能造成干擾。例如,檢測URL也會檢測Iframe內的URL。

...我已經尋找上一個解決方案,無論是#2爲在互聯網上的其餘部分。但我不是專家,所以也許有人可以幫助我或者給我去正確的教程/網站/如何做...

+0

您可以嘗試一種模式來查找不在標籤內的網址。 – Shmiddty

回答

1

你可以做的首先匹配的preg_match I幀,然後用一個佔位符代替它們。

然後,您可以替換爲url/images。然後,將iframe佔位符替換爲您之前匹配的iframe。

您可以通過使用preg_replace_callback,讓你運行一些代碼來增加每個更換$ placeholder_id生成唯一的序列佔位符。

這是一種通常可以大大簡化複雜解析的常規策略。

+0

它已經有一段時間了,但我想回到這個。你能解釋一下你如何使用preg_replace_callback? 我不完全理解回調函數。我需要做的是: 查找的iFrame - >用佔位符代替他們 查找圖像 - >用佔位符代替他們 查找網址 - >有一個佔位符 取代他們,把它全部重新走到一起...... – David

1

你可以簡單地傳遞和URL模式陣列preg_replace()像這樣:

$pattern_array = array(
    '/somepattern/', 
    '/someotherpattern/', 
    '/yetanotherpattern/', 
) 
$replacement_array = array(
    'somereplacement', 
    'someotherreplacement', 
    'yetanotherreplacement' 
} 

$result = preg_replace($pattern_array, $replacement_array, $subject_string); 
+0

我明白了,謝謝!但我該怎麼辦替換,因爲3種不同的模式需要3種不同的替換... – David

+0

@DavidDuyff只需使用數組進行替換。見編輯的答案。 –