Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) str_replace не работает / 15 сообщений из 15, страница 1 из 1
17.01.2014, 12:22
    #38529371
однобитный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) str_replace не работает
Здравствуйте! Попался текстовый файл UTF-8 с символами типа ® (авторское право)

$str = str_replace("®", "",$str);

игнорируется... с регулярными выражениями я так понял тоже не получится... (мне нужно вырезать именно этот символ и только его) как можно поступить? куда смотреть?
...
Рейтинг: 0 / 0
17.01.2014, 12:55
    #38529433
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) str_replace не работает
у меня работает.
...
Рейтинг: 0 / 0
17.01.2014, 13:02
    #38529451
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) str_replace не работает
А чего там стоит ® или ®?
...
Рейтинг: 0 / 0
17.01.2014, 13:03
    #38529454
однобитный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) str_replace не работает
это радует, буду капать настройки на серваке
...
Рейтинг: 0 / 0
17.01.2014, 13:04
    #38529458
однобитный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) str_replace не работает
оригинальный символ без всяких кодов
...
Рейтинг: 0 / 0
17.01.2014, 13:04
    #38529463
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) str_replace не работает
однобитныйэто радует, буду капать настройки на серваке
Сервак однозначно не при делах.
...
Рейтинг: 0 / 0
17.01.2014, 13:32
    #38529520
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) str_replace не работает
однобитный,

Сам скрипт в какой кодировке? Должен быть также в utf-8, иначе не только этот символ заменяться не будет.
...
Рейтинг: 0 / 0
17.01.2014, 14:06
    #38529592
однобитный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) str_replace не работает
да в утф-8 все, просто с локалью чета не то походу, на досуге разберусь все таки
...
Рейтинг: 0 / 0
17.01.2014, 14:45
    #38529660
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) str_replace не работает
однобитныйда в утф-8 все, просто с локалью чета не то походу, на досуге разберусь все таки

Как уже сказали, сервак не при делах :) str_replace не использует какие-либо настройки локалей и тому подобное. Потому для этой функции даже не предусмотрена mb_ альтернатива.

Суть работы - есть набор символов на входе, есть набор комбинаций которые надо заменить, и соответствующий набор - на какие заменить. Потому, в строке просто не был найден тот символ, который Вы пытаетесь заменить (а значит кодировка искомой строки отличается от кодировки строки на входе), и никакая настройка локалей на это не повлияет (если Вы ввели символ с кодом #195, то как не крути, это будет символ #195, хотя и будет соответствовать разным представлениям в разных кодировках)

на досуге, просто попробуйте перед заменой написать следующее, и увидите о чём я говорю:
Код: php
1.
echo "®".$str;
...
Рейтинг: 0 / 0
17.01.2014, 23:17
    #38530238
seejil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) str_replace не работает
однобитный,

mb_str_replace() используй
...
Рейтинг: 0 / 0
17.01.2014, 23:31
    #38530249
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) str_replace не работает
seejilоднобитный,

mb_str_replace() используй

буквально в прошлом сообщении написано, что нету такой функции ))) Или не читали? )
...
Рейтинг: 0 / 0
18.01.2014, 08:27
    #38530343
deblogger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) str_replace не работает
Програмёр,

Это объясняется просто: str_replace() binary safe. То есть байты не портит. Пришло 3 байта на вход (например буква я), так и будут найдены три байта и заменены на байты слова "ты".

Следовательно надо в первую очередь позаботиться о том, чтобы все байты отождествляли одну и ту же кодировку. Иначе, конечно...
...
Рейтинг: 0 / 0
18.01.2014, 09:20
    #38530363
seejil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) str_replace не работает
Програмёр,

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
if (!function_exists("mb_str_replace")) 
{
    function mb_str_replace($needle, $replacement, $haystack) {
        return implode($replacement, mb_split($needle, $haystack));
    }
}

mb_str_replace('test', 'best', $text);
...
Рейтинг: 0 / 0
18.01.2014, 14:31
    #38530508
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) str_replace не работает
seejilПрограмёр,

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
if (!function_exists("mb_str_replace")) 
{
    function mb_str_replace($needle, $replacement, $haystack) {
        return implode($replacement, mb_split($needle, $haystack));
    }
}

mb_str_replace('test', 'best', $text);



O_o это что? :)
...
Рейтинг: 0 / 0
18.01.2014, 14:37
    #38530512
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) str_replace не работает
debloggerПрограмёр,

Это объясняется просто: str_replace() binary safe. То есть байты не портит. Пришло 3 байта на вход (например буква я), так и будут найдены три байта и заменены на байты слова "ты".

Следовательно надо в первую очередь позаботиться о том, чтобы все байты отождествляли одну и ту же кодировку. Иначе, конечно...

а я именно это и говорю. Что надо проверить идентичность кодировок файла скрипта и строки, в которой ищем замену. Если не одинаковые, то к чему-то из этого применить iconv например. Как я уже говорил, если написать echo "®".$str;, то первый символ не будет выглядеть так же, как и те, что автор пытается заменить. Вот и вся хитрость.

Но к настройкам сервера это не имеет никакого отношения :)
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) str_replace не работает / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]