|
|
|
| Здравствуйте. Помогите, пожалуйста, переделать в posix-стандарт.
<?
//ставим неразрывный пробел после коротких слов
$str = preg_replace("/[^a-zа-я]([а-я]{1,3})\s/i", " $1 ", $str);
?>
|
Мой вариант (нерабочий)
<?
$str = eregi_replace("[^a-zа-я]([а-я]{1,3})[[:space:]]", " \\1 ", $str);
?>
|
Заранее спасибо. | |
|
|
|
|
|
|
|
для: antf
(16.02.2007 в 16:32)
| | Posix вариант выглядит так:
<?$str = eregi_replace("^([а-я]{1,3})[[:space:]]", " \\1 ", $str); ?>
|
Проблема в том, что оба варианта не работают как надо. Смысл выражений состоит в том, чтобы добавить неразрывный пробел после коротких слов. Так вот на локалке у меня все нормально, а вот на хостинге - глюки. Вот как обработалась фраза:
(Н)а самой дальней планете, на самом конце Западного Завитка Галактики
|
Проблема в том, что обработчик регулярных выражений проглотил букву Н в верхнем регистре в первом предлоге На. И так со всеми предлогами в верхнем регистре. Еще хостер не обрабатывает модификатор \w. | |
|
|
|
|
|
|
|
для: antf
(19.02.2007 в 17:47)
| | Возможно, на хостинге стоит неправильная локаль.
<?php
echo setlocale(LC_ALL, NULL);
?>
|
Посмотрите, что у Вас стоит и попробуйте поставить такую же на хостинге (правда названия могут отличаться, это лучше уточнить у хостера).
http://php.net/setlocale | |
|
|
|
|
|
|
|
для: kasmanaft
(19.02.2007 в 18:33)
| | Функция:
<?php
echo setlocale(LC_ALL, NULL);
?>
на хостинге выводит:
Одна буква и больше ничего. | |
|
|
|
|
|
|
|
для: antf
(19.02.2007 в 19:23)
| | Правильное имя локали и вправду лучше у хостера уточнить. Это одна из настроек операционной системы, кроме хостера врядли кто скажет точно. | |
|
|
|