Получить данные отделенные последним двоеточием

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

Stripe

Участник
Регистрация
20 Окт 2007
Сообщения
164
Реакции
9
Есть строка:
и тут Василий сказал: да пусть оно все идет куда надо: и даже даальше!:19877
В строке есть как минимум одно двоеточие после которого идут цифры. Как цифры занести в один элемент массива, а все что до них в другой, при этом последнее двоеточие (перед цифрами) выкинуть в результате? Количество двоеточий не ограничено, цифры могут быть и до последнего двоеточия.

Я с этой задачей уже голову сломал.
 
попробуй так
PHP:
<?php
$a = "и тут Василий сказал: 33333да пусть оно все идет куда надо: и даже даальше!:19877";
// цифры
preg_match_all("/(?<=\:)\d*/", $a, $b);
foreach($b[0] as $c) {
               echo $c;
           }
// текст
preg_match_all("/[\S]*(\s+)(?<![0-9])/", $a, $bb);
foreach($bb[0] as $cc) {
               echo $cc;
           }

?>
это при условии, что в конце будет твоеточие и цифры, без пробела, почитай о preg_match, можно отфильтровать любые варианты
Я не профи, так что может быть и лучшее решение:nezn:
 
Да, обсуждался, но решения о получении данных из последнего абзаца (в моем случае, после последнего двоеточия) там нет.
 
Есть строка:

В строке есть как минимум одно двоеточие после которого идут цифры. Как цифры занести в один элемент массива, а все что до них в другой, при этом последнее двоеточие (перед цифрами) выкинуть в результате? Количество двоеточий не ограничено, цифры могут быть и до последнего двоеточия.

Я с этой задачей уже голову сломал.

PHP:
$arr = array();
$text = 'и тут Василий сказал: да пусть оно все идет куда надо: и даже даальше!:19877       ';
$pos = strrpos(':',$text);
$arr[0] = substr($text,0,$pos-1);
$arr[1] = substr($text,$pos+1,strlen($text));

Массив $arr будет содержать искомые данные
 
Я уже сделал на предыдущих подсказках :)
 
saen,
молоток. Вот тут реально нафиг ненужна регулярка. вобще никак она тут не нужна.
Я хотел предложить с експлодом. но saen предложил в 100 раз лучше )
Stripe,
советую юзать код от saen )
 
ТС, а чем не подходит простое решение типа
PHP:
preg_match('/(.*):(\d+)/', $text, $matches);
В $matches[1] - часть до последнего двоеточия перед цифрами, в $matches[2] - цифири.
Только не совсем понял момент про "цифры могут быть и до последнего двоеточия".
Имеется ввиду строка вида "текст:текст:1234:текст"? Для неё вышеприведенная регулярка тож сработает. Если не так понял - приведи пример.
 
Имеется ввиду строка вида "текст:текст:1234:текст"? Для неё вышеприведенная регулярка тож сработает. Если не так понял - приведи пример.
Пример в первом посте.

Собственно пока переписать некогда будет, но как руки дойдут переделаю. Кстати, все затевалось ради вот этого: Для просмотра ссылки Войди или Зарегистрируйся
 
Я написал, что для примера из первого поста регэксп работает.
Впрочем, раз решение найдено и все стороны довольны, продолжать обсуждения смысла не имеет.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху