Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: str_ireplace зависит от регистра :(
 
 автор: nato   (09.03.2008 в 00:44)   письмо автору
 
 

Такой вопрос:

у меня в денвере str_ireplace работает не взирая на регистр,
но на хостере становится регистрозависимой.

может, дело в русской локали?
Данные беру из MySQL.
Пробовала
setlocale (LC_ALL,"ru_RU");
setlocale(LC_ALL,'ru_RU.utf8', 'Russian_Russia.utf8');
setlocale(LC_ALL, array("ru_RU.utf8", "ru_SU.utf8","ru_RU", "russian", "ru_SU", "ru"));

Ни один из вариантов не сработал.

А если написать echo $e=str_ireplace("aaa","***","aaa-AAA-aAa"); все отлично.

Заранее спасибо.

   
 
 автор: mihdan   (09.03.2008 в 11:58)   письмо автору
 
   для: nato   (09.03.2008 в 00:44)
 

>А если написать echo $e=str_ireplace("aaa","***","aaa-AAA-aAa"); все отлично.
Так вы же говорите не работает. Сами себе противоречите ))

   
 
 автор: nato   (09.03.2008 в 13:31)   письмо автору
 
   для: mihdan   (09.03.2008 в 11:58)
 

в том-то и парадокс:
если данные генерируются средствами php - то все отлично.
если данные из базы - str_ireplace не работает.

   
 
 автор: ddhvvn   (09.03.2008 в 13:53)   письмо автору
 
   для: nato   (09.03.2008 в 13:31)
 

1. В какой кодировке сам скрипт?
2. В какой кодировке хранятся данные в БД?

   
 
 автор: nato   (10.03.2008 в 10:54)   письмо автору
 
   для: ddhvvn   (09.03.2008 в 13:53)
 

1. cp1251
2. utf8_general_ci

   
 
 автор: mihdan   (11.03.2008 в 11:04)   письмо автору
 
   для: nato   (10.03.2008 в 10:54)
 

А вам не очевидны причины такого? У вас разные кодировки! Приведите к единому формату, либо при сравнении перекодируйте!

   
 
 автор: nato   (12.03.2008 в 09:49)   письмо автору
 
   для: mihdan   (11.03.2008 в 11:04)
 

Причины очевидны, но их решение - не очень. Хотя в Денвере и так работало. Почему-то.

Делаю так: сохраняю сам скрипт в utf8, в мета теге тоже прописываю utf8.
Тем временем в MySQL все тоже хранится в utf8.

Должно работать, но не работает все равно. И эта страница точно обновленная - не из кэша.

   
 
 автор: Gemorroj   (12.03.2008 в 11:31)   письмо автору
 
   для: nato   (12.03.2008 в 09:49)
 

попробуйте preg_replace с модификаторами u и i

   
 
 автор: nato   (13.03.2008 в 13:40)   письмо автору
 
   для: Gemorroj   (12.03.2008 в 11:31)
 

Ну вот что я делаю:

$result=mysql_query("SELECT * FROM news WHERE id='1' LIMIT 1") or die(mysql_error());
for ($data_welc=array(); $row=mysql_fetch_assoc($result); $data_welc[]=$row);
//echo "<pre>"; print_r($data); echo "</pre>";

$data[0]['content']=str_ireplace($search,"<font class='warning'><b>".$search."</b></font>",$data[0]['content']);

как последнюю команду записать через preg_replace? в мануале про preg_replace с модификаторами u и i я ничего не нахожу.

   
 
 автор: mihdan   (13.03.2008 в 17:46)   письмо автору
 
   для: nato   (13.03.2008 в 13:40)
 

Пример из мануала

<?php
$string 
"April 15, 2003";
$pattern "/(\w+) (\d+), (\d+)/ui";
$replacement "\${1}1,\$3";
echo 
preg_replace($pattern$replacement$string);
?> 

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования