С нами с 18.05.00
Сообщения: 4988
Рейтинг: 881
|
Добавлено: 11/06/06 в 05:46 |
Ваяю фид для наполнения блога контентом.
Столкнулся с тем, что некоторые символы (разнообразные кавычки, тире, апострофы и пр) в XML должны быть перекодированны в ASCII, иначе взникает ошибка.
Есть ли где полный перечень таких символов?
Хелпаните плиз
|
|
|
|
С нами с 31.10.05
Сообщения: 217
Рейтинг: 75
|
Добавлено: 11/06/06 в 06:54 |
Для того чтобы засунуть всё это дело в XML есть CDATA.
Юзать так.
Код: |
<?xml......?>
<root>
<tag><![CDATA[тут пишешь что угодно какие угодно символы]]></tag>
</root>
|
Потом если парcишь этот документ с помощью DOM он это всё понимает.
|
|
|
|
programmer
С нами с 08.12.02
Сообщения: 7614
Рейтинг: 5760
|
Добавлено: 11/06/06 в 07:42 |
Код: |
$title_edit = eregi_replace ("&","&", $rss_array[$i]['site_title']);
$title_edit = eregi_replace ("'","'", $title_edit);
$title_edit = eregi_replace ("’","'", $title_edit);
$title_edit = eregi_replace ("\"",""", $title_edit);
$title_edit = eregi_replace ("-"," ", $title_edit); |
|
|
|
|
С нами с 18.05.00
Сообщения: 4988
Рейтинг: 881
|
Добавлено: 11/06/06 в 08:01 |
Sterx
Да это то понятно.
Только вот есть еще несколько видов кавычек, апострофов, тире, скобок и прочего, на чем происходит спотыкач.
Я думаю, надо пропускать только буквы алфавита, цифры и некоторые знаки препинания, а всё остальное в ASCII нахуй.
Просто у меня исходные тексты по несколько мегабайт, в них нахуеверчено всякого, чего и не ожидаешь увидеть.
Наверное так и сделаю.
|
|
|
|
programmer
С нами с 08.12.02
Сообщения: 7614
Рейтинг: 5760
|
Добавлено: 11/06/06 в 08:12 |
мне этого хватает
остальные настолько редко бывают, что ими можно пренебречь
|
|
|
|
c++,php кодинг
С нами с 22.10.05
Сообщения: 1098
Рейтинг: 558
|
Добавлено: 11/06/06 в 08:41 |
htmlspecialchars спасет отца русской демократии
|
|
|
|
С нами с 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 или отказаться обрабатывать тот или иной документ.
|
|
|
|
С нами с 31.10.05
Сообщения: 217
Рейтинг: 75
|
Добавлено: 11/06/06 в 09:24 |
PS. Тем более cdata полностью решает эту проблему если уже сам составляешь документ.
|
|
|
|
С нами с 31.10.05
Сообщения: 217
Рейтинг: 75
|
Добавлено: 11/06/06 в 09:27 |
Xen писал: | Топикстартер хотел вот этого: http://www.pst.co.jp/Powersoft/html/htmlChar.htm
Стандартно требуется поддержка кодирования лишь <>'&"
Но я бы посоветовал не заморачивать процессор, а кодировать все в юникоде, ведь понастоящему нужно бояться только двух символов, а именно < и & (самому сейчас нужно кодировать кучу исходников в XML, пока склоняюсь к этому варианту ;)) |
Зачем вот изобретать такую ерунду, изза таких потом у других проблемы возникают таких же как сами которые потом тоже ищут решение этой же проблемы.
|
|
|
|
С нами с 18.05.00
Сообщения: 4988
Рейтинг: 881
|
Добавлено: 11/06/06 в 10:10 |
не знаю, может я невнятно выразился.
Мне не надо парсить XML - его уже парсит покупной скрипт.
Скрипт закрыт зендом, так что поменять там я ни чего не могу.
Мне нужно скормить ему валидный XML, который мне надо сгенерить из текста, сграбленного отовсюду.
Например в тексте присутствуют вот такие кавычки: “ „ или вот такие: » или вот такие: “” . Все они вызывают ошибку и вместо символов на паге выводятся пустые квадраты. Гугл, хавая фид, вместо символов выдает знаки вопроса: ?word?
Помимо кавычек в тексте присутствует еще куча самого разнообразного говна, который руками можно вычистить только частично, потому как заебешься.
Вот и хочу пресечь на корню.
|
|
|
|
пенсионер
С нами с 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.
|
|
|
|
С нами с 31.10.05
Сообщения: 217
Рейтинг: 75
|
Добавлено: 11/06/06 в 13:37 |
2 Vad:
Я тебе сказал что надо использовать чтобы не париться и не поиметь проблем...
2 bog:
"Во первых сдата допустим не везде (по спецификации как минимум в титле насколько я помню запрещается его использование). "
Во-первых "Кто здесь?" . О каком ты титле говоришь? тут разговор про XML документ. Тут может быть любые тэги и не быть никакого title.
"Во вторых набор символов требующих перекодировку зависит от чарсета. Если у тебя UTF-8 - любая русская буква вызовет ошибку." - XML документ надо создавть не методом формирования троки и указывать кодировку вставив туда название кодировки, от этого колировка текста и соответственно документа не изменится. (не так $xml="<root><el>jhsdkjf</el></root>") Например в php надо создавать с помощью DOMDocument или другими какими то средствами, там указывается коlировка при создании и всё ок на выходе.
htmlspecialchars вообще лучше не использовать.
И с каких это пор одна из самых сложных задач интернета, это самая простая задача инета помоему .
ЗЫ. Текст заключённый в ЦДАТА воспринимается как обычная строка. Теже XSLT парсеры его обрабатывают на ура. Т.е. ты можешь в один тег засунуть с ЦДАТА полный HTML код страницы без всяких преобразований спецсимволов и т.д. Все нормальные парсеры это воспримут и обработают.
ЗЫЗЫ. Топикпастер, можешь стукнуть в асю если нужна помошь, помогу.
|
|
|
|