Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Хелп, почему-то не работает замена

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
event
Отправлено: 06 Февраля, 2017 - 19:19:23
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 542
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Всем привет.

Есть такой код:

PHP:
скопировать код в буфер обмена
  1. $search = "є"; //Нужно это заменить
  2. $replace = "есть"; //На это
  3.  
  4. $string = "Какой-то є текст"; //В этом тексте
  5.  
  6. echo preg_replace('/(\b)'.$search.'(\b)/i','$1' . $replace .'$2', $string);


Но в итоге, почему-то не работает. С русским буквами все ок, а вот с украинскими такая беда? Как пофиксить? Улыбка
 
 Top
Строитель Модератор
Отправлено: 06 Февраля, 2017 - 19:22:36
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




event, модификатор "u" добавьте в шаблон, и будет происходить замена
PHP:
скопировать код в буфер обмена
  1. echo preg_replace('/(\b)'.$search.'(\b)/iu','$1' . $replace .'$2', $string);
 
 Top
event
Отправлено: 06 Февраля, 2017 - 19:24:50
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 542
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Строитель пишет:
event, модификатор "u" добавьте в шаблон, и будет происходить замена
PHP:
скопировать код в буфер обмена
  1. echo preg_replace('/(\b)'.$search.'(\b)/iu','$1' . $replace .'$2', $string);


Пробовал так, не работает =(
 
 Top
Строитель Модератор
Отправлено: 06 Февраля, 2017 - 19:29:32
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




event, я тоже на локалке проверил - у меня замена происходит без проблем.
PHP:
скопировать код в буфер обмена
  1. $search = "є"; //Нужно это заменить
  2. $replace = "есть"; //На это
  3.  
  4. $string = "Какой-то є текст"; //В этом тексте
  5.  
  6. // Вывод в браузер : Какой-то есть текст
  7. echo preg_replace('/(\b)'. $search .'(\b)/iu', '$1'. $replace .'$2', $string);
 
 Top
event
Отправлено: 06 Февраля, 2017 - 19:33:49
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 542
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Строитель пишет:
event, я тоже на локалке проверил - у меня замена происходит без проблем.
PHP:
скопировать код в буфер обмена
  1. $search = "є"; //Нужно это заменить
  2. $replace = "есть"; //На это
  3.  
  4. $string = "Какой-то є текст"; //В этом тексте
  5.  
  6. // Вывод в браузер : Какой-то есть текст
  7. echo preg_replace('/(\b)'. $search .'(\b)/iu', '$1'. $replace .'$2', $string);


Прямо этим кодом попробовал - нифика. Странно, кодировка стоит UTF8
(Добавление)
А если поменяю на windows-1251 в .htaccess и кодировку самого файла + убираю u то все работает. В чем прикол...
 
 Top
Строитель Модератор
Отправлено: 06 Февраля, 2017 - 19:37:57
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




event, ну видимо ваш текст, в котором осуществляется поиск, написан в windows-1251.
Больше я не знаю причин.
 
 Top
event
Отправлено: 06 Февраля, 2017 - 19:41:03
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 542
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Строитель пишет:
event, ну видимо ваш текст, в котором осуществляется поиск, написан в windows-1251.
Больше я не знаю причин.


Хм, вроде все нормально, по разному попробовал. Кажется что то здесь кроетcя:

А если поменяю на windows-1251 в .htaccess и кодировку самого файла + убираю u то все работает. В чем прикол...
(Добавление)
Прикол в том что не хочет как раз с украинскими буквами работать. Как его заставить? Радость
 
 Top
Строитель Модератор
Отправлено: 06 Февраля, 2017 - 19:48:10
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




Сперва преобразовать текст, в котором осуществляется поиск, из windows-1251 в utf-8, а потом уже обрабатывать регуляркой.
 
 Top
event
Отправлено: 06 Февраля, 2017 - 20:01:55
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 542
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Строитель пишет:
Сперва преобразовать текст, в котором осуществляется поиск, из windows-1251 в utf-8, а потом уже обрабатывать регуляркой.


PHP:
скопировать код в буфер обмена
  1.  $search = "і"; //Нужно это заменить
  2.     $replace = "есть"; //На это
  3.      
  4.     $string = iconv("windows-1251", "utf-8", "Какой-то і текст"); //В этом тексте
  5.      
  6.    
  7.    echo preg_replace('/(\b)'. $search .'(\b)/iu', '$1'. $replace .'$2', $string);


Не воркает...
 
 Top
Строитель Модератор
Отправлено: 06 Февраля, 2017 - 20:14:35
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




event пишет:
Не воркает...
А должно? Имеет смысл сперва определить кодировку, а потом уже её преобразовывать
PHP:
скопировать код в буфер обмена
  1. $search = "і"; //Нужно это заменить
  2. $replace = "есть"; //На это
  3. $string = "Какой-то і текст";
  4.  
  5. $enc = mb_detect_encoding($string);
  6. $string = iconv($enc, "utf-8", $string);
  7.  
  8. echo preg_replace('/(\b)'. $search .'(\b)/iu', '$1'. $replace .'$2', $string);
  9.  
 
 Top
event
Отправлено: 06 Февраля, 2017 - 20:16:15
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 542
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Строитель пишет:
event пишет:
Не воркает...
А должно? Имеет смысл сперва определить кодировку, а потом уже её преобразовывать
PHP:
скопировать код в буфер обмена
  1. $search = "і"; //Нужно это заменить
  2. $replace = "есть"; //На это
  3. $string = "Какой-то і текст";
  4.  
  5. $enc = mb_detect_encoding($string);
  6. $string = iconv($enc, "utf-8", $string);
  7.  
  8. echo preg_replace('/(\b)'. $search .'(\b)/iu', '$1'. $replace .'$2', $string);
  9.  


Тоже не фуричит, что ж такое... Не понял
(Добавление)
Потестил на сервере под CentOS все ок. А че на винде у меня оно фуричить не хочет. Однако

(Отредактировано автором: 06 Февраля, 2017 - 20:16:28)

 
 Top
teleoperator27
Отправлено: 06 Февраля, 2017 - 20:26:10
Post Id



Посетитель


Покинул форум
Сообщений всего: 265
Дата рег-ции: Янв. 2017  


Помог: 21 раз(а)




надо у всех. Специально конвертнул файл в cp1251, все корректно выводится

CODE (htmlphp):
скопировать код в буфер обмена
  1. $search = "є";
  2.  
  3. $replace = "есть";  
  4.  
  5. $string = "Какой-то є текст";  
  6.  
  7. $search = iconv('CP1251', 'UTF-8', $search);
  8.  
  9. $replace = iconv('CP1251', 'UTF-8', $replace);
  10.  
  11. $string = iconv('CP1251', 'UTF-8',$string);
  12.  
  13. echo preg_replace('/(\b)'. $search .'(\b)/iu', '$1'. $replace .'$2', $string);
 
My status
 Top
event
Отправлено: 06 Февраля, 2017 - 20:29:56
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 542
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




teleoperator27 пишет:
надо у всех. Специально конвертнул файл в cp1251, все корректно выводится

CODE (htmlphp):
скопировать код в буфер обмена
  1. $search = "є";
  2.  
  3. $replace = "есть";  
  4.  
  5. $string = "Какой-то є текст";  
  6.  
  7. $search = iconv('CP1251', 'UTF-8', $search);
  8.  
  9. $replace = iconv('CP1251', 'UTF-8', $replace);
  10.  
  11. $string = iconv('CP1251', 'UTF-8',$string);
  12.  
  13. echo preg_replace('/(\b)'. $search .'(\b)/iu', '$1'. $replace .'$2', $string);


Не помогло, cp1251 поменял windows-1251, по другом крякозабры были.
(Добавление)
Замкнутый кут, могу дать доступ через TeamViewer =))))
 
 Top
teleoperator27
Отправлено: 06 Февраля, 2017 - 20:41:30
Post Id



Посетитель


Покинул форум
Сообщений всего: 265
Дата рег-ции: Янв. 2017  


Помог: 21 раз(а)




ну попробуй локали задать или юзай mbstring
 
My status
 Top
event
Отправлено: 06 Февраля, 2017 - 21:39:21
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 542
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Перенес все на другой сервер - там ок все, итак это мне для единоразовой задачи нужно.

Подскажите, как включить регистрозависомость?

PHP:
скопировать код в буфер обмена
  1. $text  = preg_replace('/(\b)' . $value .'(\b)/iu','$1' . $replaceSlov[$key] .'$2',$text);
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB