PHP фильтровать строку

213
01 июня 2018, 10:10

Есть входная строка(ссылка), может быть вида facebook.com/ или http://facebook.com/ или facebook.com/events/ и т.д.

$urls = [["youtube.com/watch?v=ТУТ КАКОЙ ТО ТЕКСТ", "YouTube", ["watch","likes","dislikes","comments","top"]],
        ["youtube.com/user/ТУТ КАКОЙ ТО ТЕКСТ", "YouTube", ["subscribe"]],
    ["youtube.com/channel/ТУТ КАКОЙ ТО ТЕКСТ", "YouTube", ["subscribe"]],
    ["youtu.be/ТУТ КАКОЙ ТО ТЕКСТ", "YouTube", ["watch","likes","dislikes","comments","top"]],
    ["facebook.com/ТУТ КАКОЙ ТО ТЕКСТ", "Facebook", ["subscribe"]],
    ["facebook.com/group/ТУТ КАКОЙ ТО ТЕКСТ", "Facebook", ["group"]],
    ["facebook.com/events/ТУТ КАКОЙ ТО ТЕКСТ", "Facebook", ["events"]],
    ["facebook.com/facebook/photos/ТУТ КАКОЙ ТО ТЕКСТ", "Facebook", ["photos"]],
    ["facebook.com/facebook/videos/ТУТ КАКОЙ ТО ТЕКСТ", "Facebook", ["videos"]],
    ["facebook.com//posts/ТУТ КАКОЙ ТО ТЕКСТ", "Facebook", ["posts"]],
    ["itunes.apple.com/ru/album/ТУТ КАКОЙ ТО ТЕКСТ", "iTunes", ["music_in_top","album_in_top"]],
    ["itunes.apple.com/ru/music-video/ТУТ КАКОЙ ТО ТЕКСТ", "iTunes", ["video_in_top"]]
    ];

Нужно проверить валидная ссылка или нет

Answer 1

Составьте регулярные выражения для ваших строк, и проверьте на них. Из примера не понятно за что отвечают второй и третий элементы ваших массивов. Добавьте проверку на http вначале, замените "ТУТ КАКОЙ ТО ТЕКСТ" на .* и выражение готово.

preg_match("#^(https?://)?youtube.com/watch\?v=.*$#", $url);

Если нужно проверить на то что вместо "ТУТ КАКОЙ ТО ТЕКСТ" должно быть одно из значений третьего массива, то составьте такую регулярку:

preg_match("#^(https?://)?youtube.com/watch\?v=(watch|likes|dislikes|comments|top)$#", $url);

Если нет - уточните что нужно сделать.

Answer 2

Вот решение, для каждой ссылки делать свое выражение, для

$url = "youtube.com/watch?v=ТУТ КАКОЙ ТО ТЕКСТ";

Делаем так:

"~youtube.com/watch\?v=[^/]+$~"

Кусок кода [^/] значит Любые символы кроме / , если нужно просто любые символы тогда нужно заменить [^/] на .

READ ALSO
Как записать PHP код в файл, но не выполнять его при записи

Как записать PHP код в файл, но не выполнять его при записи

Записываю (кэширую) небольшое кол-во товаров (хитов) в файл при помощи функции:

225
Как посчитать сумму числовых значений в столбце?

Как посчитать сумму числовых значений в столбце?

как посчитать сумму числовых значений в столбце 'cost' из таблицы MySql, чтобы в переменную заносилось в данном случае значение 4850 и выводилась?

240
Magento 2. Renderer

Magento 2. Renderer

Всем приветВезде о magento 2 пишут, что есть 2 способа создания grid

166