2016-04-26 8 views
0

私はpreg_splitを使って文字列を単語に分割しています。文字列内のすべての単語を見つけるためのPHP preg_splitが機能しません

しかし、mysqlテキスト列からフェッチされた特定の文字列に対しては機能しません。

文字列を変数に手動で割り当てると正しく動作しますが、文字列がデータベースからフェッチされたときは正しく動作しません。

array(1) { [0]=> string(269) "Iden is lesz lehetoseg a foproba és a koncert napjan ebedet kerni a MUPA-ban. Ára 1000-1200 Ft körül várható. Azoknak, akik még nem jártak a MUPA-ban ingyenes bejarasi lehetoseget biztositunk. Tovabba segitunk a pesti szallas megszervezeseben is, ha igenyt tartotok ra." } 

がpreg_splitをさせていることをだれにも知っています:ここで

//The failing string. When manually assigned like this it works correctly 

$string = "<p><strong>Iden is lesz lehetoseg a foproba és a koncert napjan ebedet kerni a MUPA-ban. Ára 1000-1200 Ft körül várható. Azoknak, akik még nem jártak a MUPA-ban ingyenes bejarasi lehetoseget biztositunk. Tovabba segitunk a pesti szallas megszervezeseben is, ha igenyt tartotok ra.</strong></p>"; 

$string = strip_tags(trim($string)); 

$words = preg_split('/\PL+/u', $string, null, PREG_SPLIT_NO_EMPTY); 

がデータベースから文字列に何と呼ばれるpreg_splitリターンである:ここで

は、私が使用しています簡単なコードですこの文字列に失敗しますか?

おかげ

+0

それはどのように正確に、失敗するのでしょうか? –

+0

@mistermartin - それが何を返すのか調べてください。 –

+0

[コードがうまくいくように](http://ideone.com/UhokFC)に分割するのではなく、文字列全体を返します。多分 '-1'は'ヌル 'よりも優れていますか? '$ words = preg_split( '/ \ PL +/u'、$ string、-1、PREG_SPLIT_NO_EMPTY);' –

答えて

1

は、私は、データベースから文字列を使用してコードをテストし、同じエラーが起こった、定期的なexpresionを変更すると、あなたは解決策を持っています。 UPDATE

$words = preg_split('/[\s]/', $string, null, PREG_SPLIT_NO_EMPTY); 


//var_dump result 

array(42) { 
    [0]=> 
    string(4) "Iden" 
    [1]=> 
    string(2) "is" 
    [2]=> 
    string(4) "lesz" 
    [3]=> 
    string(9) "lehetoseg" 
... 
} 

修飾子/ uはUTF-8のためのものである、多分あなたのデータベースがUTF8ではなく、その表現は

0

を動作しませんでしたあなたは必要としない、この表現を使用します

$string = "<p><strong>Iden is lesz lehetoseg a foproba és a koncert napjan ebedet kerni a MUPA-ban. Ára 1000-1200 Ft körül várható. Azoknak, akik még nem jártak a MUPA-ban ingyenes bejarasi lehetoseget biztositunk. Tovabba segitunk a pesti szallas megszervezeseben is, ha igenyt tartotok ra.</strong></p>"; 
$string = strip_tags(trim($string)); 
$words = explode(" ", $string); 
print_r($words); 

出力:

このためregexで、 explodeは仕事をします
Array 
(
    [0] => Iden 
    [1] => is 
    [2] => lesz 
    [3] => lehetoseg 
    [4] => a 
    [5] => foproba 
    [6] => és 
    [7] => a 
    [8] => koncert 
... 

Ideone Demo

関連する問題