Форум программистов, компьютерный форум, киберфорум
PHP: RegExp
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 23.07.2015
Сообщений: 9
1

Получить числа справа и слева от символа

23.07.2015, 11:44. Показов 3361. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток.
Надо подтянуть регулярные выражения мне ) давно планировал. И вот такого рода задача встала:

Дана строка: Что-то написано 4*99 и опять 78 немного букв и может чисел
требуется вытащить из неё 4 и 99.

Моя реализация как мне кажется далека от идеала. Делаю так:

PHP
1
2
3
4
5
6
7
8
9
10
$string = "Что-то написано 4*99 и опять 78 немного букв и может чисел"; // Канонический IP-адрес
$arr = preg_split('/[\.*]/',$string);
 
$substrOne = explode(" ", $arr[0]); // Первую подстроку разбиваем
$first = array_pop($substrOne); // Последнее слово
 
$substrTwo = explode(" ", $arr[1]); // Вторую подстроку разбиваем
$second = array_shift($substrTwo); // Первое слово
 
echo $first.' | '.$second; // 4 | 99
что скажите? ужасно? )

Также могут возникать случаи, когда в строке будет несколько конструкция типа {число*число}, тогда обрабатывать только первое вхождение.

Благодарю за советы )
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.07.2015, 11:44
Ответы с готовыми решениями:

Поиск первого символа справа или последнего слева
Всем здрасти! Короткий вопрос, как найти первый символ в тексте, но справа. Или последний слева. ...

Вывод символа слева и его соответствующего кода ASCII справа
Собственно вопрос как это сделать?

Справа и слева от отрицательного числа поставить числа, равные последнему элементу массива
как справа и слева от отрицательного числа поставить числа равные последнему элементу массива?

Определите длину введённого слова,вырезать два символа слева и справа,вырезать часть слова с третей позиции два символа
Определите длину введённого слова,вырезать два символа слева и справа,вырезать часть слова с третей...

4
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
23.07.2015, 12:00 2
Лучший ответ Сообщение было отмечено alexkix как решение

Решение

PHP
1
2
if(preg_match('~^.*?(\\d+)\\*(\\d+).*?$~', $string, $matches))
    echo $matches[1], ' | ', $matches[2], PHP_EOL;
если символ не константный, а может меняться в зависимости от ситуации, то имеет смысл написать функцию
PHP
1
2
3
4
5
6
function getNumbers($str, $char = '*') {
    if(!$char || !preg_match('~^.*?(\\d+)' . preg_quote($char) . '(\\d+).*?$~', $str, $matches))
        return false;
    array_shift($matches);
    return $matches;
}
0
0 / 0 / 0
Регистрация: 23.07.2015
Сообщений: 9
23.07.2015, 12:05  [ТС] 3
KOPOJI, Супер. Функция самое оно, что и требуется. Огромное спасибо
0
1 / 1 / 0
Регистрация: 12.01.2015
Сообщений: 15
25.07.2015, 21:23 4
В поиске нашел значение "PHP_EOL" - Корректный символ конца строки, используемый на данной платформе. Доступна начиная с версии PHP 5.0.2

Но что оно означает? И что значит в контексте кода приведенного выше?
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
25.07.2015, 23:20 5
Символы перевода строки и возврата каретки. Абсолютно тоже самое означает и в контексте кода выше


То есть, можно сказать, что это аналог тега <br> из html, при отображении в текстовом представлении (запуск из консоли или просмотр исходного кода страницы в браузере и т.п.)
0
25.07.2015, 23:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.07.2015, 23:20
Помогаю со студенческими работами здесь

Получить char слева или справа от каретки в TextBox
Привет всем интересующимся, Не пойму, как можно получить символ, стоящий слева или справа от...

Вывести на экран все числа-палиндромы (числа, которые одинаково читаются как слева так и справа)
Вывести на экран все числа палиндромы (т.е числа которые читаются одинаково как слева, так и...

Переставить числа в массиве, чтобы слева от границы стояли числа, меньшие или равные b, а справа большие
Дан массив a и число b. Переставить числа в массиве таким образом, чтобы слева от некоторой границы...

Вывести числа, которые получаются из исходного числа попеременным удалением цифр по одной сначала справа, затем слева
Дано натуральное число N. Вывести все числа, которые получаются из него удалением цифр по одной...

Числа в ячейках отображаются слева, по центру, справа
здравствуйте, почему так?, я обычно видел прижатыми к правой границе ячейки пы сы лист защищённый

Получить часть строки со второго символа с конца, до символа "\" слева
Подскажите пожалуйста, как получить часть строки со второго символа с конца, до символа \ слева...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru