2012-02-16 13 views
1
preg_match("/\w+/", $s, $matches); 

私は上記のPHPコードを持っています。私はそれを文字列の単語にマッチさせるために使います。 1つのケースを除いて、素晴らしい作品です。「 w」の一致でいくつかの奇妙な文字と一致する

例:{'Bös','Tüb'}

最初の例では動作しますが、第二にはないと一致している必要があり

'This is a word'{'This','is','a','word'}

'Bös Tüb'と一致しなければなりません。代わりに{'B','s','T','b'}が返され、öüが単語文字として表示されません。

質問öüと、通常名に使用されている他の文字にマッチする方法

(彼らは奇妙なことができ、これはドイツ語とトルコ語の名前についてですか)?手動でそれらをすべて追加する必要がありますか(/[a-zA-Z and all others as unicode]/)?私はofcourseの言及を忘れてしまったよう

EDIT

、単語間で\n\r' '文字がたくさんあります。これがRegexを使用している理由です。

+1

検索ユニコードPCRE – dynamic

答えて

3

u修飾子を使用して、Unicode文字を処理できます。そしてutf8_decode()で一致をデコードします。

$s = 'Bös Tüb'; 
preg_match("/\w+/u", $s, $matches); // use the 'u' modifier 
var_dump(utf8_decode($matches[0])); // outputs: Bös 
+0

それが私の必要なものです。ありがとう! \ u003A \ u0029 – Hidde

0

あなたはスペースで分離する必要がある場合は、PHPを使用することができますFUNC好きな爆発:

$some_string = 'test some words'; 
$words_arr = explode(' ', $some_string); 
var_dump($words_arr); 

どんなに文字が文字列の中にあるものを、スクリプトが動作しません。

EDIT: あなたが試すことができます:Unicodeの

preg_match("/\w+/u", $s, $matches); 

を。

+0

は私の編集を参照してください:単語間の他、非単語の文字がたくさんあります。私はそれらをフィルタリングするのが難しい立場にいる。 – Hidde

+0

単語に数字がありますか? – mlinuxgada

+0

数字はありません。人間が言葉を作るのに使うもの、特に名前です。 – Hidde

関連する問題