XML неразрывный пробел - PullRequest
2 голосов
/ 15 ноября 2011

Я думаю, что причиной моих бед в настоящее время является неразрывный пробел.

Похоже, некоторые неприятные персонажи проникли в нашу базу данных MySQL из наших систем бэк-офиса. Итак, я пытаюсь запустить вывод XML, используя PHP XMLWriter, но в поле зрения попало множество этих глупых символов.

Они отображаются в nano как ^K, в gedit как странный квадрат , и когда вы удаляете их вручную в MySQL, они не не занимать физическое пространство, несмотря на то, что вы знаете, что что-то удалили.

Пожалуйста, помогите мне избавиться от них!

Вот строка, которая в настоящее время является кошмаром (я пропустил остальную часть сборки XMLWriter).

$writer->writeElement("description",$myitem->description);

Ответы [ 2 ]

0 голосов
/ 15 ноября 2011

Кажется, что они вертикальные вкладки , ASCII x0B. Вы должны быть в состоянии REPLACE их в MySQL:

SELECT REPLACE('\v', '', `value`) WHERE key = 'foo';

Тем не менее, в официальной справке конкретно не упоминается \v. Если это не работает, вы можете потом удалить его в PHP с помощью простого str_replace (начиная с PHP 5.2.5):

str_replace("\v", '', $result);
0 голосов
/ 15 ноября 2011

После того, как вы определили, какой символ конкретно вы хотите удалить (и это двоичная последовательность), вы можете просто удалить его.Например, с str_replace:

$binSequence = "..."; // the binary representation of the character in question
$descriptionFiltered = str_replace($binSequence, '', $myitem->description);
$writer->writeElement("description", $descriptionFiltered);

Вы еще не указали, о каком конкретном символе вы говорите, поэтому я пока не могу указать двоичную последовательность.Также, если вы говорите о группе символов, фильтрация может немного отличаться.

...