2013-08-20 28 views
1

我想在我的str_replace中使用正則表達式,我想正確的解決方案是使用preg_replace,但我不知道如何使用它。 無論如何,我想要將src=變成a這個字符,如果它匹配src=或者它在src=之間有任何空格。 通常只是把SRC =它會是:php中的正則表達式str_replace

$string = str_replace('src=', 'a', $string); 

但問題是,當有src和=之間的空間(S)那就沒辦法了。這就是爲什麼我需要使用正則表達式。 感謝您的幫助。

+0

這就是爲什麼http://php.net/manual/en/function.preg-replace.php存在:)爲了將來的參考,永遠記得谷歌首先,在PHP的str_replace''regexp查詢將帶你正確那裏。 –

回答

1
$string = preg_replace('/src\s*=/i', 'a', $string); 

什麼是正則表達式的意思是「比賽SRC後跟0或多個空格followe d by =「。

+0

如果沒有whitspace,則失敗。使用'*'而不是'+'。其次,'='不是特殊的字符,所以不需要轉義。 – dognose

+0

@ dognose修正了它。 – federicot

+0

@Campari尼斯,只需再調整一下。我如何使src不區分大小寫? –

0

的preg_replace只是工作作爲str_replace函數:

$new_string = preg_replace($pattern, $replacement, $old_string); 

你的情況的模式將是"@src\s*[email protected]"\s*涵蓋零到無窮大空格,@只是一個出不同的可能定界符的模式要求,i(後最後一個分隔符)使圖案不區分大小寫)。

0

使用preg_replace及以下模式:

src(?:\s+)?=

拆分這件事:

  • src明顯發現 「源」 部分
  • (?:\s+)?找到0個或更多的空間(S)
  • =要完成它,找到「=」

這麼幹脆,那就是:

$new_string = preg_replace("/src(?:\s+)?=/i", 'a', $string);

希望這有助於!

+0

'(?:\ s +)?'=='\ s *' – dognose