Я создаю короткий код с помощью preg_replace
.Preg_replace с кронштейнами [] внутри
$content = preg_replace(
'%\[social-lock]([^[]*)\[/social-lock]%',
$html_str_1. '\1' . $html_str_2 . '<br/>' . $html_js,
$content
);
echo $content;
Когда я применяю этот шорткод к содержимому HTML, мы будем иметь что-то подобное
Below content will be hidden.
[social-lock]
Code Vip: Write something here.
[/social-lock].
Выход в браузер будет показывать:
Below content will be hidden.
<div class="lock" style="display:none">
Code Vip: Write something here.
</div>
Но если добавить скобки внутри HTML-контент (между социальным замком), например:
Below content will be hidden.
[social-lock]
Code Vip: Write something here. [show the brackets here]
and it will not be hidden.
[/social-lock].
Содержание внутри [social-lock] - [/ social-lock] должно быть скрыто, но это не так. Я думаю, что из-за скобок [] внутри содержимого короткого кода. Но я не нашел решения.
Мой код также заменяет '[social-lock]' и помещает внутренний контент в новый div. Я попробовал '(. *?)', Но не повезло. –
@AluminumGates Как я уже сказал, вам также нужно установить флаг 's': https://regex101.com/r/zR1rC5/1 – Rizier123
Ты спас мне жизнь! Я забыл/с. Благодаря ! –