Обрезать строку до третьей запятой!

Статус
В этой теме нельзя размещать новые ответы.

mr-graffity

Профессор
Регистрация
29 Июл 2010
Сообщения
189
Реакции
43
Есть код
<?php
// входная строка
$str = 'пассажирский самолет, авиакомпания, закат, красное небо, перистые облака, след от двигателей, взлет, удачного полета';
Для просмотра ссылки Войди или Зарегистрируйся("/^(.+?,){3}/",$str,$m);
Для просмотра ссылки Войди или Зарегистрируйся $str = Для просмотра ссылки Войди или Зарегистрируйся($m[0],','); // пассажирский самолет, авиакомпания, закат
?>
Как сделать чтоб текст обрезался до третьей запятой?
т.е. чтоб осталось "красное небо, перистые облака, след от двигателей, взлет, удачного полет"
 
Для utf-8 данных
PHP:
echo preg_replace("/^(.+?,){3}/u", '' ,$str);

Для вин1251
PHP:
echo preg_replace("/^(.+?,){3}/", '' ,$str);

p.s. Хотелось бы узнать как регуляркой preg_replace оставить первые три элемента без запятой. Так и не придумал.
 
во как получилось в два вырожения
<?php
// входная строка
$str = 'пассажирский 342 самолет, авиакомпания, закат, красное небо, перистые облака, след от двигателей, взлет, удачного полета';
preg_match("|(.*?\s){3}(.*)|i",$str,$m);
print_r($m);
echo "<br>";
preg_match("/(.*?\s){2}/",$m[2],$m);

print_r($m);
?>
 
А не проще разбивать по запятым в массив, а потом брать первые четыре элемента, это будет быстрее работать
PHP:
implode(', ', array_slice(explode(', ', $str), 0, 4))
 
А не проще разбивать по запятым в массив, а потом брать первые четыре элемента, это будет быстрее работать
PHP:
implode(', ', array_slice(explode(', ', $str), 0, 4))
Это будет быстрее работать только если текст не большой. Да и вопрос не в быстроте решения, так что давайте всё таки в разделе по регуляркам давать советы именно по использованию регулярных выражений.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху