只是我更換對象標記給定的字符串PHP:不能代替使用的preg_replace()
$matches = preg_replace("/<object(.+?)</object>/","replacing string",$str);
中卻是露出了誤差
Warning: preg_replace() [function.preg-replace]: Unknown modifier 'o'
出了什麼問題?
只是我更換對象標記給定的字符串PHP:不能代替使用的preg_replace()
$matches = preg_replace("/<object(.+?)</object>/","replacing string",$str);
中卻是露出了誤差
Warning: preg_replace() [function.preg-replace]: Unknown modifier 'o'
出了什麼問題?
</object>
中的斜槓必須被引用:<\/object>
,否則它會被解釋爲您的正則表達式的結尾,因爲您正在用斜線對其進行分隔。整行應爲:
$matches = preg_replace("/<object(.+?)<\\/object>/","replacing string",$str);
在您的正則表達式正斜槓是正則表達式分隔符。當你正在處理的標籤,更好的使用另一個分隔符(而不是用一個反斜槓吧):
$matches = preg_replace("#<object(.+?)</object>#", "replacing string", $str);
還有其他delimiteres了。您可以使用任何非字母數字,非反斜槓,非空白字符。但是,在任何情況下都不應該使用某些分隔符:|
,+
,*
和括號/括號,例如,因爲它們經常在正則表達式中使用,只會混淆人並使他們恨你。
順便說一句,使用HTML的正則表達式是一個Bad Thing!
將第一個字符作爲分隔符char將表達式與標誌分開。因此,這樣的:
"/[a-z]+/i"
...的內部分爲這樣:
- Pattern: [a-z]+
- Flags: i
所以這個:
"/<object(.+?)</object>/"
...是不是一個有效的正則表達式。試試這個:
"@<object(.+?)</object>@"
@ACBalaji當你可以的時候,不要忘記接受這個答案。 – alex 2010-12-10 13:44:19