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

Форум Регулярные Выражения

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

 

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

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

тема: Помогите, пожалуйста переделать в posix стандарт
 
 автор: antf   (16.02.2007 в 16:32)   письмо автору
 
 

Здравствуйте. Помогите, пожалуйста, переделать в posix-стандарт.

<?
//ставим неразрывный пробел после коротких слов  
$str preg_replace("/[^a-zа-я]([а-я]{1,3})\s/i"" $1&nbsp;"$str);

?>


Мой вариант (нерабочий)
<?
  $str 
eregi_replace("[^a-zа-я]([а-я]{1,3})[[:space:]]"" \\1&nbsp;"$str); 
 
?>


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

   
 
 автор: antf   (19.02.2007 в 17:47)   письмо автору
 
   для: antf   (16.02.2007 в 16:32)
 

Posix вариант выглядит так:
<?$str eregi_replace("^([а-я]{1,3})[[:space:]]"" \\1&nbsp;"$str); ?>


Проблема в том, что оба варианта не работают как надо. Смысл выражений состоит в том, чтобы добавить неразрывный пробел после коротких слов. Так вот на локалке у меня все нормально, а вот на хостинге - глюки. Вот как обработалась фраза:

(Н)а&nbsp; самой дальней планете, на&nbsp;самом конце Западного Завитка Галактики


Проблема в том, что обработчик регулярных выражений проглотил букву Н в верхнем регистре в первом предлоге На. И так со всеми предлогами в верхнем регистре. Еще хостер не обрабатывает модификатор \w.

   
 
 автор: kasmanaft   (19.02.2007 в 18:33)   письмо автору
 
   для: antf   (19.02.2007 в 17:47)
 

Возможно, на хостинге стоит неправильная локаль.

<?php 
echo setlocale(LC_ALLNULL); 
?> 

Посмотрите, что у Вас стоит и попробуйте поставить такую же на хостинге (правда названия могут отличаться, это лучше уточнить у хостера).
http://php.net/setlocale

   
 
 автор: antf   (19.02.2007 в 19:23)   письмо автору
 
   для: kasmanaft   (19.02.2007 в 18:33)
 

Функция:

<?php
echo setlocale(LC_ALL, NULL);
?>

на хостинге выводит:
C


Одна буква и больше ничего.

   
 
 автор: Trianon   (19.02.2007 в 20:11)   письмо автору
 
   для: antf   (19.02.2007 в 19:23)
 

Правильное имя локали и вправду лучше у хостера уточнить. Это одна из настроек операционной системы, кроме хостера врядли кто скажет точно.

   
Rambler's Top100
вверх

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