Реклама на сайте Advertise with us

XML и недопустимые символы. Нид хелп!

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:



С нами с 18.05.00
Сообщения: 4988
Рейтинг: 881

Ссылка на сообщениеДобавлено: 11/06/06 в 05:46       Ответить с цитатойцитата 

Ваяю фид для наполнения блога контентом.
Столкнулся с тем, что некоторые символы (разнообразные кавычки, тире, апострофы и пр) в XML должны быть перекодированны в ASCII, иначе взникает ошибка.
Есть ли где полный перечень таких символов?
Хелпаните плиз

0
 



С нами с 31.10.05
Сообщения: 217
Рейтинг: 75

Ссылка на сообщениеДобавлено: 11/06/06 в 06:54       Ответить с цитатойцитата 

Для того чтобы засунуть всё это дело в XML есть CDATA.
Юзать так.
Код:

<?xml......?>
<root>
<tag><![CDATA[тут пишешь что угодно какие угодно символы]]></tag>
</root>

Потом если парcишь этот документ с помощью DOM он это всё понимает.

3
 

programmer

С нами с 08.12.02
Сообщения: 7607
Рейтинг: 5752

Ссылка на сообщениеДобавлено: 11/06/06 в 07:42       Ответить с цитатойцитата 

Код:

$title_edit = eregi_replace ("&","&amp;", $rss_array[$i]['site_title']);
    $title_edit = eregi_replace ("'","&apos;", $title_edit);
    $title_edit = eregi_replace ("’","&apos;", $title_edit);
    $title_edit = eregi_replace ("\"","&quot;", $title_edit);
    $title_edit = eregi_replace ("-"," ", $title_edit);

крипта на ByBit

3
 



С нами с 18.05.00
Сообщения: 4988
Рейтинг: 881

Ссылка на сообщениеДобавлено: 11/06/06 в 08:01       Ответить с цитатойцитата 

Sterx
Да это то понятно.
Только вот есть еще несколько видов кавычек, апострофов, тире, скобок и прочего, на чем происходит спотыкач.

Я думаю, надо пропускать только буквы алфавита, цифры и некоторые знаки препинания, а всё остальное в ASCII нахуй.
Просто у меня исходные тексты по несколько мегабайт, в них нахуеверчено всякого, чего и не ожидаешь увидеть.
Наверное так и сделаю.

0
 

programmer

С нами с 08.12.02
Сообщения: 7607
Рейтинг: 5752

Ссылка на сообщениеДобавлено: 11/06/06 в 08:12       Ответить с цитатойцитата 

мне этого хватает
остальные настолько редко бывают, что ими можно пренебречь

крипта на ByBit

0
 

c++,php кодинг

С нами с 22.10.05
Сообщения: 1098
Рейтинг: 558

Ссылка на сообщениеДобавлено: 11/06/06 в 08:41       Ответить с цитатойцитата 

htmlspecialchars спасет отца русской демократии

0
 



С нами с 19.05.04
Сообщения: 358
Рейтинг: 324

Ссылка на сообщениеДобавлено: 11/06/06 в 09:05       Ответить с цитатойцитата 

Топикстартер хотел вот этого: http://www.pst.co.jp/Powersoft/html/htmlChar.htm

Стандартно требуется поддержка кодирования лишь <>'&"

Но я бы посоветовал не заморачивать процессор, а кодировать все в юникоде, ведь понастоящему нужно бояться только двух символов, а именно < и & (самому сейчас нужно кодировать кучу исходников в XML, пока склоняюсь к этому варианту ;))

Делаем спецсофт для PPC, AntiSpyware и не только :) ICQ 2001-4567-3
Gay Top Traffic

0
 



С нами с 31.10.05
Сообщения: 217
Рейтинг: 75

Ссылка на сообщениеДобавлено: 11/06/06 в 09:23       Ответить с цитатойцитата 

Sterx писал:
мне этого хватает
остальные настолько редко бывают, что ими можно пренебречь

В XML я вообще считаю нельзя принебрегать правильностью состаления. Есть строгие спецификации по XML, и если документ не валидный или не well-formed я сразу посылаю нах такие доки. А если сам делаю то смотрю чтобы было всё ок.
Если уж пренебрегаешь то потом могут быть больше проблемы чеем вставить CDATA или отказаться обрабатывать тот или иной документ.

0
 



С нами с 31.10.05
Сообщения: 217
Рейтинг: 75

Ссылка на сообщениеДобавлено: 11/06/06 в 09:24       Ответить с цитатойцитата 

PS. Тем более cdata полностью решает эту проблему если уже сам составляешь документ.

0
 



С нами с 31.10.05
Сообщения: 217
Рейтинг: 75

Ссылка на сообщениеДобавлено: 11/06/06 в 09:27       Ответить с цитатойцитата 

Xen писал:
Топикстартер хотел вот этого: http://www.pst.co.jp/Powersoft/html/htmlChar.htm
Стандартно требуется поддержка кодирования лишь <>'&"
Но я бы посоветовал не заморачивать процессор, а кодировать все в юникоде, ведь понастоящему нужно бояться только двух символов, а именно < и & (самому сейчас нужно кодировать кучу исходников в XML, пока склоняюсь к этому варианту ;))

Зачем вот изобретать такую ерунду, изза таких потом у других проблемы возникают icon_smile.gif таких же как сами которые потом тоже ищут решение этой же проблемы.

0
 



С нами с 18.05.00
Сообщения: 4988
Рейтинг: 881

Ссылка на сообщениеДобавлено: 11/06/06 в 10:10       Ответить с цитатойцитата 

не знаю, может я невнятно выразился.
Мне не надо парсить XML - его уже парсит покупной скрипт.
Скрипт закрыт зендом, так что поменять там я ни чего не могу.
Мне нужно скормить ему валидный XML, который мне надо сгенерить из текста, сграбленного отовсюду.

Например в тексте присутствуют вот такие кавычки: “ „ или вот такие: » или вот такие: “” . Все они вызывают ошибку и вместо символов на паге выводятся пустые квадраты. Гугл, хавая фид, вместо символов выдает знаки вопроса: ?word?
Помимо кавычек в тексте присутствует еще куча самого разнообразного говна, который руками можно вычистить только частично, потому как заебешься.

Вот и хочу пресечь на корню.

0
 

пенсионер

С нами с 07.11.02
Сообщения: 2612
Рейтинг: 1166

Ссылка на сообщениеДобавлено: 11/06/06 в 11:17       Ответить с цитатойцитата 

Во первых сдата допустим не везде (по спецификации как минимум в титле насколько я помню запрещается его использование).

Во вторых набор символов требующих перекодировку зависит от чарсета. Если у тебя UTF-8 - любая русская буква вызовет ошибку.

В третьих вместо htmlspecialchars в таких случаях надо использовать htmlentities($str, ENT_QUOTES);

з.ы. Vad, это одна из самых трудных задач инета, простых решений нет. Я в свое время настолько с этим затрахался что делал preg_replace('/[\x80-\xfd]+/is' для того чтоб просто убрать невалидные символы в UTF-8.

Здесь ищу и даю работу^так делаю деньги
тут читаю инфу^веду блог, а вы?

0
 



С нами с 31.10.05
Сообщения: 217
Рейтинг: 75

Ссылка на сообщениеДобавлено: 11/06/06 в 13:37       Ответить с цитатойцитата 

2 Vad:
Я тебе сказал что надо использовать чтобы не париться и не поиметь проблем...
2 bog:
"Во первых сдата допустим не везде (по спецификации как минимум в титле насколько я помню запрещается его использование). "
Во-первых "Кто здесь?" icon_smile.gif. О каком ты титле говоришь? тут разговор про XML документ. Тут может быть любые тэги и не быть никакого title.

"Во вторых набор символов требующих перекодировку зависит от чарсета. Если у тебя UTF-8 - любая русская буква вызовет ошибку." - XML документ надо создавть не методом формирования троки и указывать кодировку вставив туда название кодировки, от этого колировка текста и соответственно документа не изменится. (не так $xml="<root><el>jhsdkjf</el></root>") Например в php надо создавать с помощью DOMDocument или другими какими то средствами, там указывается коlировка при создании и всё ок на выходе.

htmlspecialchars вообще лучше не использовать.

И с каких это пор одна из самых сложных задач интернета, это самая простая задача инета помоему icon_smile.gif.

ЗЫ. Текст заключённый в ЦДАТА воспринимается как обычная строка. Теже XSLT парсеры его обрабатывают на ура. Т.е. ты можешь в один тег засунуть с ЦДАТА полный HTML код страницы без всяких преобразований спецсимволов и т.д. Все нормальные парсеры это воспримут и обработают.
ЗЫЗЫ. Топикпастер, можешь стукнуть в асю если нужна помошь, помогу.

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »