[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите составить регулярку
noo
Нужно чтобы из строки:

слово1 слово2 слово3 слово 4

оставалось только

слово1 слово 4

Другими словами только крайние слова.

Подскажите, как это можно сделать?



Спустя 44 минуты, 40 секунд (27.03.2010 - 18:05) glock18 написал(а):
регулярка ни к чему - находишь первый пробел (сначала trim сделать)

затем последний и берешь части строки от начала до первого пробела и от конца до второго пробела. это будет работать быстрее, чем регулярка. на больших текстах - заметно.

Спустя 18 минут, 27 секунд (27.03.2010 - 18:23) noo написал(а):
хм, т.е. вы предлагаете считать пробелы, для того чтобы находить последний?
Про быстродействие - в строке всегда будет 3-4 слова из которых нужно оставить крайние, так что за быстродействие я не волнуюсь.

Спустя 39 минут, 31 секунда (27.03.2010 - 19:03) ZigZag написал(а):
Цитата
Нужно чтобы из строки:

слово1 слово2 слово3 слово 4

оставалось только

слово1 слово 4

Другими словами только крайние слова.

Подскажите, как это можно сделать?


Регуляркой так:
$txt = "слово1 слово2 слово3 слово4";

preg_match('/^(\w+).*(\w+)$/', $txt, $out, 0);

print_r($out);


Еще можешь посмотреть функции:
str_word_count — Return information about words used in a string
explode — Split a string by string

Первая тебе создаст массив слов, а из него уже выберешь первый и последний элемент, вторая сделает тоже самое только пробле указать надо в качестве разделителя

Спустя 18 часов, 48 минут, 37 секунд (28.03.2010 - 12:52) noo написал(а):
ZigZag, спасибо большое, буду пробовать!

Спустя 1 час, 35 минут, 41 секунда (28.03.2010 - 14:27) noo написал(а):
пока решил вот так обрабатывать:

$text="Один два ТрИ четыре";
$words = explode(' ', $text);
$i=0;
foreach ($words as $word) {

$word = trim($word);

if (!empty($word))
{
$i++;}

}

Как мне теперь получить первое и последнее слово?

Спустя 23 минуты, 44 секунды (28.03.2010 - 14:51) John_761 написал(а):
 $text = "Один два ТрИ четыре";
$words = explode(' ', $text);

print_r($words); // Array ( [0] => Один [1] => два [2] => ТрИ [3] => четыре )
echo $words[0]; // 1й элемент
echo $words[count($words) - 1]; // последний

Спустя 1 час, 29 минут, 40 секунд (28.03.2010 - 16:21) krasilich написал(а):



$text = "Один два ТрИ четыре";
$words = explode(' ', $text);

print_r($words); // Array ( [0] => Один [1] => два [2] => ТрИ [3] => четыре )
echo reset($words); // 1й элемент
echo end($words); // последний



Так красивее=)

Спустя 6 часов, 20 минут, 23 секунды (28.03.2010 - 22:41) noo написал(а):
спасибо огромное вам!

Спустя 23 часа, 56 минут (29.03.2010 - 22:37) twin написал(а):

Цитата
в нем учтены любые др символы помимо пробелов и так далее... чисто тока слово (кириллица) выскочит

Ой ли?
$text = "Один ёжик два ёжика ТрИ ЁжикА четыре ёжика";

Спустя 51 минута, 50 секунд (29.03.2010 - 23:29) DedMorozzz написал(а):
NewBePhp, подабовляй буковки "ё" везде. Это любимый вопрос Твина. Ходят слухи, что даже Сталин, на этот вопрос Твину не ответил biggrin.gif

Спустя 1 час, 14 минут, 17 секунд (30.03.2010 - 00:43) krasilich написал(а):
NewBePhp
Во-первых - не работает, вот вывод

array(1) { [0]=> array(23) { [0]=> string(1) "�" [1]=> string(6) "дин" [2]=> string(6) "два" [3]=> string(1) "�" [4]=> string(1) "�" [5]=> string(1) "�" [6]=> string(1) "�" [7]=> string(3) "е�" [8]=> string(1) "�" [9]=> string(1) "�" [10]=> string(2) "е" [11]=> string(1) "�" [12]=> string(1) "�" [13]=> string(1) "�" [14]=> string(1) "�" [15]=> string(1) "�" [16]=> string(1) "�" [17]=> string(1) "�" [18]=> string(1) "�" [19]=> string(1) "�" [20]=> string(1) "�" [21]=> string(1) "�" [22]=> string(3) "м�" } }


А во-вторых задача не та стояла.

Спустя 24 минуты, 41 секунда (30.03.2010 - 01:08) krasilich написал(а):
Я то знаю почему не работает, и что сделать что бы работало.
Дело не в этом. Дело в том, что это решение не той задачи, которую хотел решить ТС

Спустя 4 часа, 38 минут, 15 секунд (30.03.2010 - 05:46) twin написал(а):
NewBePhp
Цитата
даже думаю куда элегантнее чем указанные выше примеры

Это задачка для детей дошкольного возраста smile.gif

<pre>
<?php

$text = "Один ёжик два ёжика ТрИ ЁжикА четыре ёжика";
preg_match_all("/(\S+)/iu", $text, $arr);
print_r($arr[0]);
echo reset($arr[0]), '<br>'; // 1й элемент
echo end($arr[0]); // последний
?>
</pre>

Только для чего регуляркой то?

Спустя 6 часов, 26 минут, 30 секунд (30.03.2010 - 12:13) noo написал(а):
Итак друзья, снова возникла задачка.

Есть текст, набранный криворукими хорошими людьми.
Примерно такой: "вы,я он.Что за текст,нда. А тут все нормлаьно, ага."

Как нормально отформатировать текст, т.е. добавить после всех запятых и точек пробелы?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.