Скрипт новостей. Нормально ли написано?

SelenIT

IT-лунатик :)
Это вложенный тернарный оператор.

Имхо, эту функцию можно оптимизировать - начинать искать ближайший пробел сразу от желаемой позиции "обрезки", а не от начала строки. А то и вообще заменить ее одним preg_replace'ом.
 

Kostya\spb

Новичок
Ну я нашол ее на сайте пхп.нет. не сам делал

-~{}~ 19.07.05 13:44:

Кстати а как заменить preg_replace'ом? принцып какой будет?
 

SelenIT

IT-лунатик :)
Например - выделить подстроку от начала строки до границы слова минимально возможной длины, но не менее n символов. Пример (n=100):
PHP:
preg_replace('~(^.{100,}?\b).+~','\\1...',$str);
 

Kostya\spb

Новичок
SelenIT хм. пойду с регулярыми разбиратся

-~{}~ 19.07.05 15:00:

А preg_replace неподходит.
Если выводит через ту фнкцию фразу которую написал Кром
PHP:
вот текстовая строка которую нужно поделить на части
$small_news = snews(strip_tags($n), 100);
Выведит: вот текстовая строка ...

А если через preg_replace('~(^.{100,}?\b).+~','\\1...',$str);
Выведит: вот текстовая ст�...
 

SelenIT

IT-лунатик :)
Задачу Крома не решает ни тот, ни другой вариант. Оба они считают символы в закодированной строке, а не те русские буквы, которые рисует браузер (что требуется).

А вот это данный пример "отрежет" правильно (хотя вероятность ошибки все равно есть):
PHP:
preg_replace('~^((&.{2,5};|.){25,}?)[^\w&].*~', '\\1...', $str);
По идее, можно еще уменьшить риск ошибки путем усложнения регулярки.
 
Сверху