[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Найти выражение с конца строки: нужна помощь
baston
Друзья, есть строки такого типа:
Цитата
текст а ов=ф  kd(32:65)jja =0f d09f(12:125)

Мне нужно вытащить цифры в скобках, находящиеся в конце строки. В переменных должны сохраниться цифра до двоеточия и цифра после двоеточия. В самой строке могут встречаться похожие выражения. Но интересуют именно крайние!
Я попробовал так найти, но что-то не то...:
$str = 'текст а ов=ф  kd(32:65)jja =0f d09f(12:125)';
$pattern = "#([\d]+:[\d]+)#i";
mb_ereg($pattern, $str, $arr);
echo "<pre>";
print_r($arr);
echo "</pre>";

Надеюсь на помощь.
Спасибо.



Спустя 19 минут, 41 секунда (19.03.2010 - 17:13) baston написал(а):
Вот получилось так:
([\d]+:[\d]+)\)$

Если можете, проверьте у себя еще! Или можно другое выражение применить? Получше?
Спасибо.

Спустя 14 минут, 57 секунд (19.03.2010 - 17:28) Snap написал(а):
не совсем понятно.

<?php
$str = 'текст а ов=ф kd(32:65)jja =0f d09f(12:125)';
$line = explode(":",$str);
$32=line[0];
$12=line[1];
echo $32;
echo $12;
?>

Спустя 2 минуты, 42 секунды (19.03.2010 - 17:30) baston написал(а):
Цитата (Snap @ 19.03.2010 - 17:28)
не совсем понятно.

Нет, это неверно. Я написал в условиях - найти выражение с конца строки. Вы же нашли первое вхождение,да к тому же использовали функцию explode() с разделителем.
А если этот разделитель будет в другом месте и разделять не цифры, а слова?

Спустя 5 минут, 41 секунда (19.03.2010 - 17:36) sergeiss написал(а):
Цитата (baston @ 19.03.2010 - 17:53)
Мне нужно вытащить цифры в скобках, находящиеся в конце строки.

А если не мудрить, и просто использовать функцию strrpos?

int strrpos ( string $haystack , string $needle [, int $offset ] )
Возвращает позицию последнего вхождения needle в строку haystack .

Находишь местоположение последних круглых скобок, и затем функцией substr выбираешь нужные данные.

Спустя 1 минута, 49 секунд (19.03.2010 - 17:38) baston написал(а):
Я это было попытался использовать, но подумал, что регуляркой будет проще и наверняка...
Как вариант, попробую и так.
Спасибо.

Спустя 17 минут, 3 секунды (19.03.2010 - 17:55) sergeiss написал(а):
Цитата (baston @ 19.03.2010 - 18:38)
но подумал, что регуляркой будет проще

Для всех фунций работы с регулярками в хэлпе написано, что если есть возможность использовать более простые варианты, то надо их использовать. Потому что регулярки дольше могут работать. И их имеет смысл использовать для сложных случаев. А как у тебя - найти позицию 2-х определенных символов, находящихся где-то в конце строки - лучше простые функции брать.

Спустя 1 час, 26 минут, 22 секунды (19.03.2010 - 19:21) Winston написал(а):
Вот тебе индусский код, который работает почти так как тебе нужно, только, что - то не получается крайний элемент поймать.

$str = "текст а ов=ф  kd(32:65)jja =0f d09f(12:125)";
preg_match_all ("#(\(\d+:\d+\))#", $str, $out);
$e = explode (':', $out[0][0]);
echo $e[0].'<br/>';
echo $e[1];
Быстрый ответ:

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