Почему не работают регулярные выражения preg_replace в php?

Ссылка скопирована
PHP
1 ответ

Не работают регулярные выражения через preg_replace.

Вывожу текст [post_text] текст остается без изменений. Символы которые надо скрыть, никуда не пропали.

$outputssss = preg_replace('/^([*]+)|([*]){2,}/m', '', $row['post_text']);

$outputssss = preg_replace('/^([*]+)|([*]){2,}/m', '', $row['post_text']);

Полный код

function user_get_post ($post_id = 0) {     global $db, $phpbb_root_path, $phpEx;     $sql = 'SELECT post_text         FROM ' . POSTS_TABLE . '         WHERE post_id = ' . (int) $post_id;     $result = $db->sql_query($sql);     $row = $db->sql_fetchrow($result);     $db->sql_freeresult($result);     if ($row) {         if ($row['enable_sig'] == 0) { 	    $outputssss = preg_replace('/^([*]+)|([*]){2,}/m', '', $row['post_text']);          } 		return $outputssss;     }     else {         return 'Specified post_id not valid!';     } }

function user_get_post ($post_id = 0) { global $db, $phpbb_root_path, $phpEx; $sql = 'SELECT post_text FROM ' . POSTS_TABLE . ' WHERE post_id = ' . (int) $post_id; $result = $db->sql_query($sql); $row = $db->sql_fetchrow($result); $db->sql_freeresult($result); if ($row) { if ($row['enable_sig'] == 0) { $outputssss = preg_replace('/^([*]+)|([*]){2,}/m', '', $row['post_text']); } return $outputssss; } else { return 'Specified post_id not valid!'; } }

Дополнительно:

покажите пример входной строки и скажите, что вы пытаетесь из нее удалить

  • Сергей delphinpro, Здравствуйте

    В сообщениях есть ббкоды. Они в скобках [bbcode][/bbcode]

    Пытаюсь удалить содержимое в скобках.

    В итоге путем проб и ошибок я понял, что регулярки совсем не работают. Ну или у меня руки не из того места

  • fOstere, я бы посмотрел готовые решения https://yandex.ru/search/?text=bbcode+php
  • Сергей delphinpro, Спасибо большое. Я все это уже проходил, я не спец, я исходя из логики переделал код. Он заработал. Затем ббкоды убрать не смог ибо готовых решений не нашел или же я как-то неправильно вставлял код.

    Все равно спасибо, Сергей.

  • Сергей delphinpro, Спасибо, Сергей. Методом проб и ошибок из того что нашел по вашей ссылке нашел решение
    $outputssss = preg_replace('/[.*?]/', '', $row['post_text']);

    $outputssss = preg_replace('/[.*?]/', '', $row['post_text']);

  • Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Мария Код Ответ

    Если у вас возникла проблема с тем, что функция preg_replace в PHP не работает как ожидается, есть несколько возможных причин, по которым это может происходить. Вот несколько шагов, которые вы можете предпринять, чтобы исследовать и исправить проблему:

    1. Убедитесь, что вы правильно используете синтаксис preg_replace. Функция preg_replace требует передачи трех аргументов: шаблон для поиска, замену и строку, в которой нужно произвести замену. Убедитесь, что вы передаете все три аргумента и что они находятся в правильном порядке.

    2. Проверьте шаблон регулярного выражения. Если ваше регулярное выражение содержит специальные символы, такие как косая черта (\), точка (.), звездочка (*) и другие, убедитесь, что они экранированы правильно. Например, вместо того чтобы написать '\d' для поиска цифр, используйте '\\d'.

    3. Проверьте флаги модификаторов. Функция preg_replace принимает второй параметр - флаги модификаторов, которые могут влиять на поведение регулярного выражения. Убедитесь, что вы используете подходящие флаги для вашего случая.

    4. Проверьте возвращаемое значение функции preg_replace. Функция preg_replace возвращает измененную строку, поэтому убедитесь, что вы сохраняете эту возвращаемую строку в переменной или выводите ее на экран.

    5. Проверьте ошибки и предупреждения. Убедитесь, что в вашем скрипте включено отображение всех ошибок и предупреждений (error_reporting(E_ALL)) и что вы проверяете журнал ошибок PHP на наличие сообщений об ошибках.

    Если после выполнения всех этих шагов проблема с функцией preg_replace все еще остается, попробуйте упростить ваше регулярное выражение и постепенно добавляйте функциональность, чтобы найти место, где возникает проблема. Если ничего не помогает, вы можете задать более конкретный вопрос и предоставить больше информации о вашем коде, чтобы получить более точный ответ на вашу проблему.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно