Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.07.2013, 11:52   #1
Небесный
Зелень
Форумчанин
 
Аватар для Небесный
 
Регистрация: 03.02.2007
Сообщений: 302
По умолчанию utf8(кирилица) и функция str_replace

Имеется проблема с функций str_replace, которая заменяет кирилицу в кодировке utf8.

Собственно сама строка.
Код:
$text = str_replace($st,' ',$text);
Тепер делаю разъеснение.
$st - массив слов, которые нужно убрать в тексте $text(строковая переменная), заменяю слова на проблелы.

К сожалению функции mb_str_replace, все что искал самописные подобные функции не работают.
Переводить из utf8 в win1251 и обратно тоже не выход, появляются в некоторых местах текста кракозяблы.

А, ну и сама версия php.

Код:
PHP 5.4.15-1~dotdeb.1 (cli) (built: May 11 2013 19:59:55)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
    with Xdebug v2.2.2, Copyright (c) 2002-2013, by Derick Rethans
Всем благодарю за помощь!!!
Небесный вне форума Ответить с цитированием
Старый 14.07.2013, 12:18   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Та к проблема в чем кроется?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.07.2013, 12:38   #3
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

str_replace отлично справляется со строками в UTF-8:
PHP код:
$str 'это простая строка для проверки работоспособности функции замены';
echo 
mb_detect_encoding($str);
$words = array('это''для''замены');
$new_str str_replace($words' '$str);
var_dump($str$new_str); 
Вывод:
Код:
UTF-8
string 'это простая строка для проверки работоспособности функции замены' (length=121)
string '  простая строка   проверки работоспособности функции  ' (length=100)
Andkorol вне форума Ответить с цитированием
Старый 14.07.2013, 13:16   #4
Небесный
Зелень
Форумчанин
 
Аватар для Небесный
 
Регистрация: 03.02.2007
Сообщений: 302
По умолчанию

Проблема в том, что не удаляет из текста слова, они остаются. Проблема есть и не только у меня, обращайте внимание, я не просто так написал версию php.

Решение все таки нашел.
Цитата:
note that when you turn on zend.multibyte,you should change mbstring internal encoding to match the script encoding.

example:

(php.ini)
zend.multibyte = On
zend.script_encoding = utf-8
;note this:
mbstring.internal_encoding = utf-8

another example:

(php.ini)
zend.multibyte = On

(script)
<?php
declare(encoding = 'utf-8');
ini_set('mbstring.internal_encoding ', 'utf-8');
//now do your work...
?>
Всем спасибо, за отзывы. Ну и я думаю лишним не будет, эта тема для других.

Последний раз редактировалось Небесный; 14.07.2013 в 13:36.
Небесный вне форума Ответить с цитированием
Старый 14.07.2013, 13:58   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
лишним не будет, эта тема для других.
Ну тут и не поспоришь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
кирилица Игорь_С Qt и кроссплатформенное программирование С/С++ 2 01.04.2013 13:24
str_replace и substr_replace kilogram PHP 8 11.04.2012 10:35
кирилица в smtp TulskiyTokarev Общие вопросы C/C++ 0 24.03.2010 17:28
Замена подстрок (str_replace) Linel PHP 2 16.05.2009 18:00
Кирилица в C++ ROD Помощь студентам 2 06.12.2008 14:50