Почему не работают регулярные выражения preg_replace в php?
Не работают регулярные выражения через 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!'; } }
Дополнительно:
покажите пример входной строки и скажите, что вы пытаетесь из нее удалить
В сообщениях есть ббкоды. Они в скобках [bbcode][/bbcode]
Пытаюсь удалить содержимое в скобках.
В итоге путем проб и ошибок я понял, что регулярки совсем не работают. Ну или у меня руки не из того места
Все равно спасибо, Сергей.
$outputssss = preg_replace('/[.*?]/', '', $row['post_text']); |
$outputssss = preg_replace('/[.*?]/', '', $row['post_text']);
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Если у вас возникла проблема с тем, что функция 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 все еще остается, попробуйте упростить ваше регулярное выражение и постепенно добавляйте функциональность, чтобы найти место, где возникает проблема. Если ничего не помогает, вы можете задать более конкретный вопрос и предоставить больше информации о вашем коде, чтобы получить более точный ответ на вашу проблему.