2010-09-30 4 views
0

Я пытаюсь разбить текст на массив с помощью explode, но по какой-то причине это не работает, когда текст поступает из опубликованной формы.Проблемы с попыткой взорвать строку

Если я бегу explode('|§|', 'qwe|§|asd|§|zxc'); я получаю массив как:

Array 
( 
    [0] => qwe 
    [1] => asd 
    [2] => zxc 
) 

НО

Если ввод текста происходит от формы определяют как:

<form method="post"> 
Input: <input type="text" name="query" size="50" value="qwe|§|asd|§|zxc"><input type="submit" value="Parse"> 
</form> 

Я получаю следующий массив:

Array 
( 
    [0] => qwe|§|asd|§|zxc 
) 

Я предполагаю, что это связано с настройками iso и что текст в поле запроса был каким-то образом изменен, но я не могу понять, как исправить. Я пробовал установить <meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1" /> и другие кодировки, но безрезультатно.

Любые идеи? Заранее спасибо.

+0

Пожалуйста, покажите точный код, который вы используете, чтобы взорвать содержание с –

+1

Не обижайтесь, но какая-либо причина, почему вы chosed такого синтаксиса ужасного значения ? –

+0

Ничего не взято :) Две причины Хенрик, во-первых, это то, что это было быстро напечатать, потому что это одно и то же письмо для меня в Норвегии, и потому, что мне нужно было выбрать то, что маловероятно, чтобы кто-нибудь входил в предложение: P – Thomas

ответ

0

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

Вы пытались изменить его на нечто более ... нормальное? Как если бы вы сделали qwe|~|asd|~|zxc вместо этого, или, может быть qwe|+~+|asd|+~+|zxc, если вы обеспокоены тем, что кто-нибудь войти

+0

Кажется, вы правы в отношении юникода, этот персонаж, по-видимому, является причиной проблемы. Я переключил его на ~, и теперь он работает нормально. Спасибо, парни. – Thomas

4

Просто идея: знак §, вероятно, будет преобразован в формат url. Сначала попробуйте urldecode().

Смежные вопросы