2013-04-03 1 views
0

У меня есть строка, и я хочу, чтобы преобразовать их в массив с помощью символа «§»:Признать «§» с PHP

<?php 
$string="element1§element2§element3"; 
$array=explode("&sect;",$string); //tried also &#167; and §,double and single quotes 
print_r($array); 
?> 

Выход всегда так:

Array ([0] =>element1§element2§element3) 

Как могу ли я позволить php распознавать символ «§», чтобы разделить строку на массив?

EDIT: Я получаю строку из файла с помощью функции file() и итерации массива через foreach. Если я использую свой собственный пример, он работает, но с экстернальным файлом нет.

rowurlencode() моей строки является продолжением:

element1%A7element2%A7element3

+1

Почему вы используете буквальный символ в строке 2, но амперсанд закодированных версий в строке 3? Придерживайтесь одного формата. –

+1

Я пробовал именно ваш код с § и получил: 'Array ([0] => element1 [1] => element2 [2] => element3)'; здесь это: > –

+0

уже пробовал, «$ string» - это просто пример, я его уже отформатировал из другого источника, но обе экранированные символы и буквенный символ не решают вопрос –

ответ

1

rawurlencode ваша строка, чтобы увидеть код этого персонажа.

затем использовать этот код в качестве разделителя

$array=explode("\xA7",$string); 
0

Если вы буквально использовали:

<?php 
    $string="element1§element2§element3"; 
    $array=explode("§",$string); 
    print_r($array); 
?> 

Это будет работать. Я предполагаю, что в вашем случае $string происходит из другого источника и не совпадает с тем же символьным кодированием, что и ваш PHP-файл.

2

отлично работает для меня

ini_set('default.charset', 'UTF-8'); 
header('Content-type: text/html;charset=UTF8'); 

$string="element1§element2§element3"; 
$array=explode("§",$string); 

print_r($array); //Array ([0] => element1 [1] => element2 [2] => element3) 
+0

, если я установил ini_set() и header(), он больше не получается «§», но замените его на « » I получить строку из файла с помощью функции file() и итерации массива через foreach. Если я использую свой собственный пример, он работает, но с экстернальным файлом не –

+1

У меня была такая же проблема, как у вас. Поэтому, если вы хотите загрузить данные из внешнего файла, вам необходимо убедиться, что файл находится в 'UTF-8 без спецификации. Например, * Notepad ++ * делает это. Проблема в кодировании. – Yang

+0

спасибо, я постараюсь исправить эту проблему –

0

я найти ответ, благодаря своему здравому смыслу. Просто я изменить функцию взрываются(), как это:

$array=explode("%A7",rawurlencode($string)); 

Где "% A7" является rawurlencode из "§".

+0

, это неправильно. вы испортите свою строку –