У меня есть данные (varchar), которые выглядят, например, так:
1 hour(s)20 minutes
5 minutes
2 hour(s)5minutes
2 hour(s)
Я пытаюсь написать функцию, в которой я могу разбить каждую из этих строк в массив, чтобы мне оставались только числовые значения.
INPUT = 1 hour(s)20 minutes
OUTPUT = Array ( [0] => 1 [1] => 20)
Я пробовал использовать регулярное выражение, но не уверен, правильно ли я поступаю, это то, что у меня есть до сих пор:
$array = preg_split('/(hour(s)|minutes)/', $data);
return $array;
и вот результат, который я получаю:
Array ( [0] => 1hour(s)15 [1] => )
Может ли кто-нибудь указать мне правильное направление?
Спасибо!
Этот stackoverflow.com/questions/11243447/… будет работать, preg_match_all('/\d+/', $data, $matches);
Вы можете использовать шаблон вроде \b(\d+)\h*(?:hour\(s\)|minutes)
с preg_match_all См. 3v4l.org/h9ADn
Вы должны убрать скобки, чтобы они буквально соответствовали
\(
и\)
.