2016-05-30 34 views
3

・特殊文字で爆発:私はこのような文字列持つ

preg_split("/[?·]/",strip_tags($single->children(2)->outertext)) 

explode(chr(149), strip_tags($single->children(2)->outertext)); 

explode(utf8_encode('·'),strip_tags($single->children(2)->outertext)); 

explode('·',strip_tags($single->children(2)->outertext)); 

しかし、ソリューションのどれも私のために働かない:私は私のような様々な解決策を試してみました·ことによってそれを爆発する必要が Suède · Slovénie

を!誰にでも教えていただけますか?

+0

帽子文字セットは使用していますか? Utf-8の 'è'は2バイト(0xC3,0xA8)で、' explode() 'は他のPHP文字列関数と同様に、バイトベースで動作します – johannes

+0

Preg_splitスペースドットスペース?私は任意の文字としてドットを意味します – Andreas

+0

'preg_split( '/?・')フラグを使って、' preg_ * '関数が' u'フラグを使ってUnicode文字列を正しく操作するように教えて(私はUTF-/u '、..) 'も仕事をすることができました。しかし、 'mb_split()'を使うというMarcinの提案は、より表現力豊かなのではるかに優れています。 –

答えて

3

あなたは、むしろmb_split()を使用しなければならない:

var_dump(mb_split('·', 'Suède · Slovénie')); 

これは、すべての文字列を、指定された文字列で動作するようだが、そうでないかもしれないの

array(2) { 
    [0]=> 
    string(7) "Suède " 
    [1]=> 
    string(10) " Slovénie" 
} 
+0

'・'トリミングの繰り返しを保存することができます – strangeqargo

0

できます。

preg_split("/\b (\W+) \b/", $str); 
0

あなたのファイルは、おそらくUtf-8を使用しています。 Utf-8で·は2バイト(0xC2、0xB7)で構成され、"/[?·]/"のような式はこれらのバイトのいずれかで壊れます。代わりに、あなたは、UTF-8モードを使用するu修飾子を使用する必要があります。さらに良い

$ php -r 'print_r(preg_split("/[?·]/u", "Suède·Slovénie"));' 
Array 
(
    [0] => Suède 
    [1] => Slovénie 
) 

mb_split()マルチバイト意識分割機能を使用して、それは常に利用可能ではありません。

0

それはあなたがsimplehtmldomを使用しているようだと、それは次のようにstr_get_htmlを使用し、適切に文字をコードしないです:

//mb_convert_encoding will try to detect the `$html` encoding and convert it to `UTF-8` 
$html = str_get_html(mb_convert_encoding(file_get_contents("http://somesite.com"), 'auto', 'UTF-8')); 

そして、あなたは簡単に使用することができます。

explode('·',strip_tags($single->children(2)->outertext)); 
0

私を発見しましたソリューション、· =・そのhtmlentityを入れるだけです。

explode('·',$str); 
関連する問題