<input type="text" name="title" value="<?=str_replace('"', '″', $news[$i]['title']);?>" />
вообще-то, не только кавычкиКак вариант - при выводе значений в полях формы можно заменять кавычки на их сущности
это точно? информация проверена?перед сохранением в БД - нужно выполнить обратную замену
Я вроде уточнил - в каком случае это нужно сделать:это точно? информация проверена?
(если критично наличие именно кавычек в тексте)
«Обратную замену» делает только браузер.Соответственно, перед сохранением в БД - нужно выполнить обратную замену.
Не берусь решать это за ТС.Andkorol
Ну вот я и спрашиваю - это точно нужно делать? (в указанном случае)
Так, сначала давайте.Andkorol, ты же заикнулся об «обратном преобразовании». Ты считаешь, что в input.value будет лежать строка с «″» (пользователь увидит эти 7 символов у себя в поле ввода)? А проверить?
Теперь поясню, что я имею ввиду.Соответственно, перед сохранением в БД - нужно выполнить обратную замену
(если критично наличие именно кавычек в тексте).
<?php
$test = 'Test "quotes" and "quotes again"';
echo $test, ' : Length - ', strlen($test), '<br/>';
?>
<form method="post" action="">
<input type="text" name="test" value="<?=str_replace('"', '″', $test);?>" size="50" /><br/>
<input type="submit" value="sub"/><br/>
</form>
<?php
if(!empty($_POST['test'])){
echo $_POST['test'];
var_dump($_POST['test']);
}
?>
Теперь предположим, что поле для title в БД у ТС ограничено, например 40 байт.Test "quotes" and "quotes again" : Length - 32 ---> это у нас длина исходной строки
.... форма ....
Test ″quotes″ and ″quotes again″ ---> выглядит всё супер
string 'Test ″quotes″ and ″quotes again″' (length=56) --->но длину имеет совершенно другую
Начали об одном, закончили совсем о другом.Andkorol, «″» — это НЕ символ «"», это символ «″». Короче говоря, смотри http://php.net/htmlspecialchars
Упрощенно - потому что не нужно заморачиваться с "левой-правой" кавычками, при этом в полях формы выглядит всё как обычные двойные кавычки(в вашем сообщении, кстати, тоже).( напр. упрощенно на ″ )
Я не правильно выразился, имел ввиду эскейпить вывод. К примеру htmlspecialchars();shelestov вообще-то, к данной проблеме слеши не имеют отношения никакого.
Их не надо ни убирать, ни добавлять - они тут вообще не при чём.
Проверил кодировки - виновен!!!Твоя страница, очевидно, интерпретируются в каком-нибудь windows-1251, а этого символа там нет, поэтому браузер посылает их в таком виде. Никакого обратного преобразования делать не нужно.
меня вообще с потрахами вырезалиПосле разбиения тема смотрится ущербно.![]()