Сначала вы должны найти строку с датой. Регулярное выражение даты не на 100% (например, 2020-13-49 25:61:61 будет найдено), но есть другие потоки, если вы ищете это (проверка диапазона номеров длинна в регулярном выражении). Вам также следует искать номера телефонов, которые начинаются с +
и содержат целые и дефисы после. Если встречается какой-либо из этих случаев, мы фиксируем это значение. Кроме того, если встречаются два последовательных пробела (\s
) или табуляция (\t
), они должны быть разлиты на это.
$test = 'SIMONSH Test Test2 Director of GCL Operations +31-20-406-0000 +31-20-406-0001 Test.me@group.com 0000-10-27 2001-08-01 ZH Amsterdam AMSTERDAM Amsterdam 100 Reputation Management EMPL EMEA FHAMS MORTELLM 2016-10-05 13:07:00 2019-03-26 10:01:00';
$arr = preg_split('/(\d{4}-\d{2}-\d{2}\h+\d{2}:\d{2}:\d{2}|\+[\d-]+)\h*|(?:\s{2,}|\t)/', $test, -1, PREG_SPLIT_NO_EMPTY| PREG_SPLIT_DELIM_CAPTURE);
print_r($arr);
Примерно проверка даты: \d{4}-\d{2}-\d{2}\h+\d{2}:\d{2}:\d{2}
Проверка номера телефона: \+[\d-]+
\h*
после этих двух строк, потому что мы не заботимся о том, чтобы завершать пробелы в них.
Два последовательных пробела или табуляция: (?:\s{2,}|\t)
?:
()
делает невозможным захват, в противном случае вы получите пробел, который также вызвал разрыв в результате.