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

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

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

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

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

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

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

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

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

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

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

Следовательно надо в первую очередь позаботиться о том, чтобы все байты отождествляли одну и ту же кодировку. Иначе, конечно...
...
Рейтинг: 0 / 0
(PHP) str_replace не работает
    #38530363
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);
...
Рейтинг: 0 / 0
(PHP) str_replace не работает
    #38530508
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
(PHP) str_replace не работает
    #38530512
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
debloggerПрограмёр,

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

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

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

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


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