Приветствую, Двач, нужна, как ты понимаешь, помощь. Вопрос небольшой и спецефический, я даже не знаю с чем он связан, вероятно с кодировками. Собсно, в чём дело: я пишу кмс-ку, в которой используется собственный язык разметки, который с моей точки зрения облегчает вёрстку и позволяет соблюдать множество хороших вещей типо валидности разметки и правильности употребления типографических символов почти автоматически. С этим всем я справился, так как имею склонность к программированию задач мало связанных с реальными :). Сейчас я добрался до практической задачи: мне нужно сделать форму, через которую я буду править страницы проекта, которые лежат в базе MySQL. Возникла проблема, что когда я получаю текст из текстовой области формы некоторые символы не распознаются, в частности символ апострофа, который в разметке заменяется как ''text'' и '''text''' на теги em и strong соответственно (идея не точно бы сворована у педивикии, но просто это самый простой и логичный символ после звёздочки-астериска для такого выделения). Если всё то же получается из текстового файла всё пучок. Я проверил ord("'") выдаёт одно значение, а ord символа ' полученный из текстовой области другое значение. Короче как всё это исправить, ибо я уже совсем охуел и облазил сорцы, читал про типы в базах и ограничения на них и многое другое. Помогите. Если потребуется дам более точное описание проблемы.
%20 ?\" ?
Кодировка однобайтная вроде. 3992Вслучае, когда я ввожу в строку $code = "asd ''qwe'' asd " символ амперсанда его код 39. В движке он обрабатывается.Если этот же текст ввести в текстовую область и получить его через '$_POST[]' я получаю код символа 92. И в тексте так и остаются амперсанды.
$code = "asd ''qwe'' asd "
$ python>>> \'\\'>>> '"'"ололо, ты же бэкслеш получаешь. обработай-ка регекспом строку. удали каждый бэкслеш, и оставь по одному, если их два подряд.
$ python>>> \'\\'>>> '"'"
ололо, ты же бэкслеш получаешь. обработай-ка регекспом строку. удали каждый бэкслеш, и оставь по одному, если их два подряд.
>>> \>>> 'опа, хотел написать сhr(92) и сhr(39) соответственноselffix
>>> \>>> '
опа, хотел написать сhr(92) и сhr(39) соответственноselffix
>>3282 - не ОП.А ОП был не понят. Я имею ввиду, что когда я получаю строку из текстового файла или просто из инициализатора, то в ней символ апострофа имеет код 39 (функция Ord(char)). А если получать строку из широкого текстового поля формы (через POST), то этот символ имеет другой код (92). Иными словами он в коде уже не обрабатывается как надо.
САМОБАМП
>>3308> то этот символ имеет другой код В твоем языке, похоже, код символа и симовол - это одно и то же. Подумай об этом. 92 это бакслеш.
>>3308
> то этот символ имеет другой код
В твоем языке, похоже, код символа и симовол - это одно и то же. Подумай об этом. 92 это бакслеш.
>>3449Конечно, инфа устарела (пока идут ответы на тред, я тоже не сижу на месте), но всё равно спасибо. Почему-то когда я получаю строку из post-запроса в ней все апострофы и дюймы экранируются, именно поэтому я ошибочно посчитал, что символы имеют разный код (я послал через форму один символ ', и прочитал его код $s = $_POST["text"]; print ord($s{0}); но так как он был экранирован на нулевое место выскочил бэкслэш). Теперь я не могу понять как возникает это экранирование.
>>3449Конечно, инфа устарела (пока идут ответы на тред, я тоже не сижу на месте), но всё равно спасибо.
Почему-то когда я получаю строку из post-запроса в ней все апострофы и дюймы экранируются, именно поэтому я ошибочно посчитал, что символы имеют разный код (я послал через форму один символ ', и прочитал его код $s = $_POST["text"]; print ord($s{0}); но так как он был экранирован на нулевое место выскочил бэкслэш). Теперь я не могу понять как возникает это экранирование.
Да ты упорок!Первая ссылка в гуглеhttp://i-novice.net/magicheskie-kavychki-magic-quotes-v-php-i-ekranirovanie/
>>3510Спасибо, анон. Я не знал по какому ключу гуглить.
- wakaba 3.0.8 + futaba + futallaby -