Убрать ненужные данные из строки, если содержащиеся числа могут отличаться
У меня есть строки, которые могут содержать такие данные, как:
- PMC от 1 до 2 дней
- ПТГ от 10 до 15 дней
- ПТГ от 3 до 7 дней
- Пукатор от 1 до 3 дней
Мне нужно раздеть это так, чтобы мне просто оставили числа, хранящиеся в виде двух отдельных переменных, которые я могу использовать в качестве целых чисел для расчета наибольшего времени доставки в другом разделе кода. Я предполагаю, что мне нужно использовать substr, но я не знаю, можно ли / как его использовать, если вы не знаете, какое значение вы хотите удалить. Нужно ли делать отдельную строку для каждого возможного первого и второго номера? И можно ли использовать substr для извлечения первого и второго одновременно или мне нужно будет обработать его дважды?
1 ответ
Вы можете сделать это легко с помощью регулярных выражений и PHP preg_match_all()
функция:
$str = "PTG 10 to 15 days";
preg_match_all('/\d+/', $str, $matches);
print_r( $matches[0] );
// => Array
// (
// [0] => 10
// [1] => 15
// )
Если вы хотите получить их как отдельные переменные, list()
твой друг:
list($first_num, $second_num) = $matches[0];
echo $first_num; // => 10
echo $second_num; // => 15
Поскольку вы новичок в регулярных выражениях, я рекомендую прочитать почтенное руководство Regular-Expressions.info. В этом случае мы использовали регулярное выражение /\d+/
, который просто говорит, чтобы соответствовать всем последовательностям из одной или нескольких цифр. \d
означает "цифра" и +
означает "один или несколько" из всего, что предшествует этому.