не думал что скобки помогают
~<span>(?:Game|Игра)</span>~m
//$str = 'Иванов Иван Иванович 01.01.1970 353';
$str = 'Иванов Иван 01.01.1970 353';
extract( splitLineBySpace($str) );
var_dump($lastname, $firstname, $secondname, $birthdate, $number);
function splitLineBySpace(string $str): array
{
$lastname = $firstname = $secondname = $birthdate = $number = '';
$patt = '~(\S+)\h(\S+)(?:\h(\S+))?\h((?:\d\d\.){2}\d{4})\h(\d+)~';
if (preg_match($patt, $str, $arr)) {
if (count($arr) == 6) {
[, $lastname, $firstname, $secondname, $birthdate, $number] = $arr;
} else {
[, $lastname, $firstname, $birthdate, $number] = $arr;
}
}
return compact('lastname', 'firstname', 'secondname', 'birthdate', 'number');
}
$str = 'post/123';
if (preg_match("#^post/(?P<name>\d+)$#", $str, $arr)) {
var_dump($arr);
}
В результате будет массив:~com/(?:[^/]+/)?\K[^/\s?]+~
я там не нашел буквы К и ?:
K
, а последовательность символов \K
, означающая сброс буфера регулярных выражений, или проще говоря - удаление из памяти найденных на данный момент совпадений. Символы ?:
вы тоже ошибочно вырвали из контекста - в оригинале они пишутся так: (?:...), и означают они незахватывающую группировку. Её отличие от обычной группировки (...) в том, что она не сохраняет в памяти группу символов, находящихся внутри скобок. Ну и последнее: последовательность символов \s
означает символьный класс всех пробельных символов (табуляция, перевод на новую строку, и т.п.).~@[\h\pL]+\(([^)]+)\)\h\{([^}]+)\}\K~
$string = '40|https://site1.com/files/02bea218b601ef2cbc74e08dc8d78_1000_1000.png;77|https://site1.com/files/29037cbdc27707fe2d6b2cf4d3924_1000_1000.png;78|https://site1.com/files/923b6f214f8bffcf20fbbebe5365b_1000_1000.png;85|https://site1.com/files/f8b6dbe261e89877e23e6a6f00003_1000_1000.png';
$result = rtrim(preg_replace('~\|[^;]+(?:;|$)~', ',', $string), ',');
echo $result; // 40,77,78,85
$json = '{"v": 50, "vd": 5},
{"v": 51, "vd": 1},
{"v": 54, "vd": 3},
{"v": 57, "vd": 3},
{"v": 60, "vd": 3},
{"v": 61, "vd": 1},
{"v": 62, "vd": 1},
{"v": 63, "vd": 1},
{"v": 63, "vd": 0}';
$array = array_map(function($a){ return $a['v']; }, json_decode("[$json]", true));
var_dump($array);