madFobos, Код обычного пробела вовсе не 0xA0, а 0x20 http://www.asciitable.com/ Но во многих кодировках (в.т.ч. и в http://en.wikipedia.org/wiki/ISO/IEC_8859-1) так же существует еще один, так называемый, не разрывной пробел (NO-BREAK SPACE). Именно он и имеет код 0xA0. Т.ч. вполне логично, что str_ireplace() не находит пробела.
Цитата(madFobos @ 16.8.2007, 22:51 ) | | Собственно рег. выражения использовать не получается, т.к. там есть в условиях и скобки и точки и пр. хрень, да и не нужно это. |
Цитата(madFobos @ 17.8.2007, 07:38 ) | | $before = addcslashes($before, '\.\/()\"[]'); |
Для того, что бы безопасно использовать обычный шаблон в шаблоне регулярных выражениях существует функция http://us2.php.net/manual/en/function.preg-quote.php, которая экранирует все спецсимволы используемые в регулярных выражениях.
Цитата(madFobos @ 17.8.2007, 07:38 ) | | Причем самое странное, что часть проелов документа реагирует только на \s, а часть только \xA0. Хотя по идее \s должен включать в себя \xA0 (HEX пробела). Если кто-то все таки знает ответ, сообщите, плиз. |
А вот тут уже, вероятно, виновата именно локаль, точнее даже кодировка локали. Т.к. к примеру в cp866 и, если не ошибаюсь, в koi8-r нету не разрывного пробела. |