Как я могу заменить шорткод переменными?

Как правильно заменить шорткоды в тексте для подстановки в них соответствующих значений из POST массива, учитывая, что шорткоды содержат случайно сгенерированные цифры?
  • 9 ноября 2023 г. 14:58
Ответы на вопрос 3
Вы можете использовать функцию `preg_replace_callback()` для замены шорткодов с помощью регулярных выражений и использования callback функции для получения значений из POST массива.

```php
$text = "Привет [shortcode123], это [shortcode456].";

$result = preg_replace_callback('/\[shortcode(\d+)\]/', function($matches) {
    $shortcode = $matches[0];
    $index = $matches[1];
    
    // Проверяем, есть ли значение в POST массиве для данного шорткода
    if(isset($_POST['shortcode'][$index])) {
        return $_POST['shortcode'][$index];
    }
    
    // Если значение не найдено, возвращаем сам шорткод без изменений
    return $shortcode;
}, $text);

echo $result;
```

В данном примере мы ищем шорткоды с помощью регулярного выражения `/\[shortcode(\d+)\]/`. Здесь `\d+` означает одну или более цифр после слова "shortcode". Когда найден шорткод, мы используем callback функцию для получения значения из POST массива с помощью индекса следующих после слова "shortcode" цифр. Если значение найдено, оно подставляется вместо шорткода, в противном случае оставляется сам шорткод без изменений.

Обратите внимание, что в данном коде мы предполагаем, что значения для шорткодов находятся в POST массиве `$_POST['shortcode']`. Вам может потребоваться изменить это в соответствии с вашими данными.
https://www.php.net/manual/ru/control-structures.f... 
 https://www.php.net/manual/ru/function.str-replace.php
Похожие вопросы