2013-02-24 27 views
-2

我得到這個:preg_replace自動添加< and >,但它很奇怪?

$_response_body = preg_replace("</body>","<script>alert('test');</script><br /></body>",$_response_body); 

它應該寫:

<script>alert('test');</script><br /> 
</body> 

但事實並非如此。如果我刪除小於號和偉大 - 比符號所以說

<<script>alert('test');</script><br /></body>> 

正如你所看到的,它增加了一個額外的<和> ..:

script>alert('test');</script 

然後將其寫入回報它將返回:

<script>alert('test');</script<br /></body>> 

有人知道爲什麼會發生這種情況?

+0

使用'str_replace()'而不是 – 2013-02-24 20:18:48

回答

2

在這種情況下,它會更好地利用str_replace函數,而不是preg_replace函數

str_replace("</body>","<script>alert('test');</script><br /></body>",$_response_body); 
+0

謝謝你,你是男人。我從來沒有想過str_replace ...非常感謝。 – MortenMoulder 2013-02-24 20:16:43

1

preg_replace失敗,因爲你忘了delimeters

preg_replace("#</body>#", 
1

您使用的是preg_replace,它需要第一個參數爲PCRE模式。這些模式由delimiters包含。您沒有添加任何分隔符,但它會將<>作爲分隔符,因此這些不會被視爲您的匹配模式的一部分。

基本上,它不是加上多餘的字符,它只是不符合你想象的那麼多。

正如gaskar指出的那樣,如果您實際上沒有使用任何正則表達式,那麼您也可以使用str_replace