只是一個簡短的問題,考慮到XML請求或響應,這兩條線總是會給出相同的結果嗎?這是str_replace是否與此preg_replace相同?
str_replace(array("\n", "\t", "\r", "\r\n"), '', trim($xml));
preg_replace('#>\s+<#', '><', $xml);
如果不是,我該怎麼做preg_replace
那樣?
預先感謝您。
只是一個簡短的問題,考慮到XML請求或響應,這兩條線總是會給出相同的結果嗎?這是str_replace是否與此preg_replace相同?
str_replace(array("\n", "\t", "\r", "\r\n"), '', trim($xml));
preg_replace('#>\s+<#', '><', $xml);
如果不是,我該怎麼做preg_replace
那樣?
預先感謝您。
preg_replace
比str_replace
(它只匹配尖括號外的空白)更受約束,而\s
包含空格字符。此外,像<blah> \r \n \t TEXT \t\t</blah>
這樣的字符串不會被替換,而是保留空白。
事實上,這兩者在某種程度上都不影響空白。
等效preg_replace
您str_replace
也只是('/[\r\n\t]/','',$xml)
非常感謝。我想我應該堅持舊的'str_replace';然後;) – Peon
號舉例來說,如果你有這樣的:
<tag att="1"
att="2"
att="3">text</tag>
它們會得到不同的結果。但是,如果我可以給出建議,不要使用正則表達式來達到此目的。
他們不是相似的,因爲:
如果第一個變體適合你,那麼在我看來,它是更好的正則表達式。否則,這可能是搜索到的:
preg_replace('#>\s+<#m', '><', $xml);
爲什麼你想用preg_replace替換str_replace?如果str_replace可以爲你做,就不要使用preg_replace。 – Nin