Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2014, 17:42   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,893
Вопрос Удалить \r\n в конце строки

Доброго времени суток!
Есть
PHP код:
<?php
include "dbconnect.php";

$nick mysql_real_escape_string($_POST['nick']);
$about mysql_real_escape_string($_POST['about']);
// Удалим \r\n
//$about = preg_replace("/\\\\r\\\\n/", "", $about); // Не вариант
echo $nick."~".$about;
?>
На выходе получаю: 'Shouldercannon~1\r\n2\r\n'
Можно ли как-нибудь избавиться от \r\n, только в конце строки?
Shouldercannon вне форума Ответить с цитированием
Старый 02.12.2014, 19:03   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
// Не вариант
Почему?...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.12.2014, 19:19   #3
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,893
По умолчанию

Если я отправлю это:
123
456
789
То получится вот это:
123456789

Может как в Pascal сделать, взять из строки всё кроме последних сколько-то символов.
Shouldercannon вне форума Ответить с цитированием
Старый 02.12.2014, 19:24   #4
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,455
По умолчанию

Цитата:
// Не вариант
потому-что $about = preg_replace("/\\\r\\\n/", "", stripslashes($about));
)
uberchel вне форума Ответить с цитированием
Старый 02.12.2014, 20:51   #5
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,893
По умолчанию

Цитата:
Сообщение от uberchel Посмотреть сообщение
потому-что $about = preg_replace("/\\\r\\\n/", "", stripslashes($about));
)
Теперь так: 1rn2rn

решение:
PHP код:
$about substr($about0, -4); 

Последний раз редактировалось Shouldercannon; 02.12.2014 в 21:14.
Shouldercannon вне форума Ответить с цитированием
Старый 02.12.2014, 21:02   #6
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

rtrim
Andkorol вне форума Ответить с цитированием
Старый 02.12.2014, 21:19   #7
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,893
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
PHP код:
$about rtrim($about"\r\n"); 
И если по отдельности не удаляются
Shouldercannon вне форума Ответить с цитированием
Старый 02.12.2014, 21:36   #8
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

PHP код:
php -'$str = "1\r\n2\r\n"; var_dump($str); var_dump(rtrim($str));'
string(6"1
2
"
string(4"1
2" 
Всё нормально удаляется: в первом выводе после двойки есть перевод строки – а во втором выводе перевода строки после двойки уже нет.
Изменение длины строки также указывает на удаление символов перевода в конце строки.

Последний раз редактировалось Andkorol; 02.12.2014 в 21:38.
Andkorol вне форума Ответить с цитированием
Старый 03.12.2014, 11:44   #9
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,893
По умолчанию

Если от руки в переменную ввести данные, то работает, если так
PHP код:
$about mysql_real_escape_string($_POST['about']);
$str $about;
$str rtrim($str);
echo 
$str
то получаем: qqq\r\n\123\r\n
Shouldercannon вне форума Ответить с цитированием
Старый 03.12.2014, 12:26   #10
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Функцией mysql_real_escape_string нужно обрабатывать непосредственно те данные, которые сразу же после этой обработки идут в запрос.
Какой смысл сначала экранировать спецсимволы – а потом пытаться их удалить?
PHP код:
echo $_POST['about']; // qqq\r\n\123\r\n
$about rtrim($_POST['about']); // qqq\r\n\123\r\n ––> qqq\r\n\123
echo $about// qqq\r\n\123

$sql "INSERT INTO `table` (`about`) 
        VALUES ('" 
mysql_real_escape_string($about) . "')"
Andkorol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалить текст между словом и ; на конце Karyuudo PHP 2 16.04.2013 15:59
Дана строка со словами, разделёнными пробелами, в конце - точка. Удалить слово с заданным номером (Паскаль ABC) Margosham-k Помощь студентам 6 10.04.2012 12:11
FASM (assembler). Удалить пробелы в начале и в конце строки Zart Помощь студентам 4 23.04.2011 21:18
Знак переноса строки в конце строки. Kalika Microsoft Office Access 2 12.09.2010 11:27
Delphi 7, удалить символ в конце файла Flame_of_Death Помощь студентам 5 10.08.2009 06:32