У меня есть некоторые BB-коды изображений, подобные этому
[IMG]imageurlhere[/IMG]
[IMG alt="image alt here"]imageurl[/IMG]
[IMG alt="image alt here" title="image title"]imageurl[/IMG]
Я использовал это, чтобы получить URL-адрес изображения
preg_match_all('/\[(img|IMG)\]\s*(https?:\/\/([^*\r\n]+|[a-z0-9\/\\\._\- !]+))\[\/(img|IMG)\]/Ui', $stringContainBbCode, $matches);
$urls = $matches[0];
Но я могу получить URL-адрес изображения только в первом случае. Как мне поступить с двумя оставшимися случаями?
1 ответ
Вы можете использовать блок ()?
для проверки дополнительного содержимого, такого как "s" в "https", которое вы проверяете с помощью s?
. Используйте его, чтобы проверить, присутствует ли атрибут alt
или нет. Регулярное выражение будет примерно таким:
/\[(img|IMG)(\s+alt="(?P<alt>[^"]+)")?(\s+title="(?P<title>[^"]+)")?\]\s*(https?:\/\/([^*\r\n]+|[a-z0-9\/\\\._\- !]+))\[\/(img|IMG)\]/Ui
Обратите внимание, что в этом регулярном выражении атрибут «alt» должен быть перед атрибутом «title», если они оба присутствуют.
Похожие вопросы
Новые вопросы
php
PHP — это широко используемый язык сценариев общего назначения с открытым исходным кодом, мультипарадигмальный, динамически типизированный и интерпретируемый, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.