[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: str_replace и « »
NiceGuest
При замене в исходной строке «бла» слово бла на слово 'один' обрезается первая ковычка и превращается в �. На выходе получается �один»

Как быть в таком случае?

Насколько я понял нет функции mb_str_replace.
retro4u
Цитата (NiceGuest @ 31.07.2014 - 14:12)
При замене в исходной строке «бла» слово бла на слово 'один' обрезается первая ковычка и превращается в �. На выходе получается �один»

Как быть в таком случае?

Насколько я понял нет функции mb_str_replace.

Кодировку строки попробовать сменить - iconv;
NiceGuest
Цитата (retro4u @ 31.07.2014 - 15:39)
Кодировку строки попробовать сменить - iconv;

У меня по идеи utf-8 стоит на странице и в базе тоже. На какую же мне ее сменить тогда?
retro4u
Цитата (NiceGuest @ 31.07.2014 - 14:44)
Цитата (retro4u @ 31.07.2014 - 15:39)
Кодировку строки попробовать сменить - iconv;

У меня по идеи utf-8 стоит на странице и в базе тоже. На какую же мне ее сменить тогда?

Хотя бы код-то покажи smile.gif
sergeiss
Цитата (NiceGuest @ 31.07.2014 - 15:12)
Насколько я понял нет функции mb_str_replace.

Сделай так, чтобы она была smile.gif Иначе так и будешь фигню получать при работе со строками.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
NiceGuest
Цитата (sergeiss @ 31.07.2014 - 16:08)
Цитата (NiceGuest @ 31.07.2014 - 15:12)
Насколько я понял нет функции mb_str_replace.

Сделай так, чтобы она была smile.gif Иначе так и будешь фигню получать при работе со строками.

В смысле свою написать / найти готовую?)

Т.к. php.net нет ее готовой:)

Ну а если самому писать / найти готовую, я так думаю она будет сильно проигрывать в скорости работы. Может стоит тогда на mb_ereg_replace заменить? быстрее может будет, как считаете?
NiceGuest
Цитата (retro4u @ 31.07.2014 - 15:50)
Цитата (NiceGuest @ 31.07.2014 - 14:44)
Цитата (retro4u @ 31.07.2014 - 15:39)
Кодировку строки попробовать сменить - iconv;

У меня по идеи utf-8 стоит на странице и в базе тоже. На какую же мне ее сменить тогда?

Хотя бы код-то покажи :)

Чтобы было на что смотреть весь код нужно выложить, что не возможно, но если по дельным кускам то вот:


header("Content-Type: text/html; charset=utf-8");
$link = mysqli_connect($server, $user, $pass,$base) or die("Can't connect");

mysqli_set_charset($link, "utf8");

...

$cont_query = mysqli_query($link,"запрос в базу");

$cont = mysqli_fetch_array($cont_query, MYSQLI_ASSOC);

$contText = $cont['text'];
...

$contText = str_replace($inBodyLinks[0][$n], '<a href="http://'.$inBodyLinkURLs[1].'">'.$inBodyLinks[2][$n].'</a>', $contText);



как то так. Суть: из текста выдергиваются мои теги и заменяются html'ными. Все было ок но вылезли «» которые str_replace не могут нормально вырезаться. Пример данный в первом посте это та ситуация с которой я столкнулся.
netruxa
можно в php.ini прописать mbstring.internal_encoding = utf-8

_____________
ввв.парсер.рф - онлайн система проверки позиций Вашего сайта в поисковиках. Для форумчан 100 рублей на счет.
NiceGuest
Цитата (netruxa @ 31.07.2014 - 17:51)
можно в php.ini прописать mbstring.internal_encoding = utf-8

Спасибо за ответ, а это поможет с str_replace и ковычками или это для mb_str_replace функции?
rooor
а так?
$a = 'бла «бла» бла';
$a = preg_replace("/бла/u", 'один', $a);
echo $a;
NiceGuest
Цитата (rooor @ 31.07.2014 - 17:54)
а так?
$a = 'бла «бла» бла';
$a = preg_replace("/бла/u", 'один', $a);
echo $a;

А вот и наш победитель biggrin.gif Да, дескриптор u сделал свое дело. Не знал что дескрипторы работают, казалось что я читал буквально на днях что они бесполезны здесь и сам пробовал их вставлять и они у меня не работали, только это был не u и пример не этот. Но теперь работает и спасибо большое тебе.
killer8080
NiceGuest
никогда не замечал проблем с юникодом у str_replace(), может просто локаль нужно было выставить?
Вообще str_replace для этой задачи не подходит, но совершенно по другим причинам, из-за граблей на которые вы не успели наступить smile.gif
Так же как и использовать регулярки для простой замены текста весьма неудачное решение, нужно было применить strtr
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.