Создание очень простого шорткода на PHP

Я хочу создать очень простое решение для шорткода на простом веб-сайте, отличном от WordPress, который я поддерживаю, чтобы пользователи могли вводить контент, который будет извлекаться из базы данных и отображаться на экране, позволяя им создавать кнопки href.

Я видел различные классы для этого, но хочу сделать это всего одной или двумя строками кода, если это возможно.

Только они войдут через шорткод в таком формате:

[BUTTON link="www.test.com" label="Нажмите здесь"]

Пока у меня есть это, которое не извлекает атрибуты должным образом:

$copy=preg_replace('/\[(BUTTON )(.*?)\]/', '<a href = "$2">$1</a>', $copy);

Кто-нибудь может посоветовать?

Я бы использовал preg_replace_callback с простым регулярным выражением, чтобы сопоставить весь шорткод (со всеми атрибутами в одной группе захвата) и выполнить синтаксический анализ атрибутов в отдельной функции с чем-то вроде токенизатора.

KompjoeFriek 21.10.2022 14:14
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
54
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

может быть, проверить, как WordPress это реализовал?

https://github.com/WordPress/wordpress-develop/blob/6.0.2/src/wp-includes/shortcodes.php

и если приведенная выше ссылка не работает, проверьте ядро ​​​​WordPress, как они реализовали функциональность короткого кода на GitHub.

Если эта ссылка изменится / умрет, то ваш ответ бесполезен. Вот почему Stack Overflow никогда не хочет получать ответы только по ссылкам.

mickmackusa 21.10.2022 15:25
Ответ принят как подходящий

Я предполагаю, что вы на самом деле хотите захватить не КНОПКУ, а ссылку и метку.

Код: (Демо)

echo preg_replace(
         '/\[button link = "([^"]+)" label = "([^"]+)"]/i',
         '<a href = "$1">$2</a>',
         $text
     );

Это потрясающе, спасибо @mickmackusa. Единственное, что мне интересно, легко ли сделать так, чтобы порядок указанных атрибутов мог быть любым? В настоящее время это должна быть ссылка, а затем метка.

AdamJones 25.10.2022 13:35

Конечно выполнимо, но я рекомендую настаивать на строгом форматировании. Я бы, наверное, использовал preg_replace_callback() с условием и еще несколькими группами захвата.

mickmackusa 25.10.2022 14:23

Другие вопросы по теме