#preg-match #extract
Вопрос:
Я искал способ извлечь идентификатор файла на Google Диске, и хорошо искал информацию и некоторые аналогичные функции, мне удалось найти это, это работает для меня, но я надеюсь, что они смогут отполировать его немного больше.
<?php
function get_drive_id_from_url($url) {
preg_match('//d/(. )//', $url, $result);
return $result[1];
}
echo get_drive_id_from_url('https://drive.google.com/file/d/FILE_ID/view?usp=sharing');
?>
Ответ №1:
Если вы используете другой разделитель, /
вам не нужно избегать прямой косой черты. Вы можете использовать K
, чтобы забыть, что соответствует до сих пор, а затем сопоставить любой символ, кроме /
Затем утвердите a /
прямо справа, используя положительный внешний вид.
Поскольку при этом не используется группа захвата, результат будет $result[0]
получен .
/d/K[^/] (?=/)
Шаблон совпадает:
/d/
Совпадение буквальноK
Очистите буфер совпадений[^/]
Сопоставьте 1 раз любой символ, за исключением/
(или[^/s]
чтобы также не совпадать с символом пробела)(?=/)
Позитивный взгляд, утверждайте/
прямо направо
Смотрите демонстрацию регулярных выражений и демонстрацию PHP.
Пример кода
function get_drive_id_from_url($url)
{
preg_match('~/d/K[^/] (?=/)~', $url, $result);
return $result[0];
}
echo get_drive_id_from_url('https://drive.google.com/file/d/FILE_ID/view?usp=sharing');
Выход
FILE_ID
Вариант группы захвата обновленного шаблона:
/d/([^/] )/