Как записать неформатированный текст?
При записи в базу MySQL текст идет с форматированием. Как убрать это форматирование? Попробовал через регулярку убрать все переносы и пробелы. Попробовал оставить только буквы и цифры и скобки и все знаки, но все равно остаются какие-то тройные пробелы. хотя в регулярке убираю. Как найти что за символы прячутся в этих пробелах?
$message = (preg_replace('/[^a-zA-Zа-яА-Я0-9_ ()- @+:/.s]/iu', '', $v['message'])); $message = (str_replace('(', ' (', $message)); $message = str_replace(' ', ' ', str_replace(array("rn", "r", "n", "t", ' ', ' ', ' ', ' ', ' '), ' ', $message)); |
$message = (preg_replace('/[^a-zA-Zа-яА-Я0-9_ ()- @+:/.s]/iu', '', $v['message'])); $message = (str_replace('(', ' (', $message)); $message = str_replace(' ', ' ', str_replace(array("rn", "r", "n", "t", ' ', ' ', ' ', ' ', ' '), ' ', $message));
Дополнительно:
Надо не забыть приложить пример этого "форматированного текста"
‼️Дата: 25 июля‼️ Москва‼️
Дата: 25 июля Москва Отправлять на ватс апп:
Какой-то непонятный пробел из 3 штук. Хотя по идее его не должно быть.
У меня пишут пост в телеграмм канал и все это летит в базу через api, а там все как есть.
Иногда прибегаю к помощи к таким объектам как со стороны PHP, так и со стороны JS. Кое-что они могут вычищать в плане форматирования. Попробуйте.
попробуйте догадаться, как ее использовать
preg_replace('/s+/s', ' ', $v['message']) вместо всех этих танцев вприсядку
$dom = new DOMDocument("1.0", "UTF-8"); $dom->loadHTML("Your content"); echo $dom->textContent; |
$dom = new DOMDocument("1.0", "UTF-8"); $dom->loadHTML("Your content"); echo $dom->textContent;
Но скорее всего вам не подойдет, эта штука очистит от html-тегов и преобразует html-сущности.
Правильную кодировку для поля установите, и правильно с юникодом работайте
1. Из вопроса непонятно при чём тут mysql.
2. Вообще не очень понятно какой результат вам нужен: в коментах не увидел никакого форматирования тоже.
3.
остаются какие-то тройные пробелы.. хотя в регулярке убираю
Вы её неверно используете
echo str_replace(['a','b','c'], 'c', 'ab'); // 'cc' |
echo str_replace(['a','b','c'], 'c', 'ab'); // 'cc'
4. Попробуйте так, может окажется достаточно для вас.
- 1. Пишу в базу
2. Нужен результат в одну строку где пробел будет один а не из трех или четырех. И никаких переносов строк https://racheev.ru/test.php тут вывод того что в базу пишется, а ниже то что я с регулярками получаю. Но все равно там пробел не одинарный есть. И никак его не убрать.. -
// после всего $message = preg_replace('/s+/', ' ', $message );// после всего $message = preg_replace('/s+/', ' ', $message );
- iljaGolubev, спасибо, я там сделал повтор удаления пробелов все заработало.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для записи неформатированного текста в HTML можно использовать тег