2010-01-18 7 views
3

J'essaie de diviser une chaîne avec du texte en mots en utilisant la fonction php preg_split.Scinder une chaîne en mots avec des caractères suédois

$words = preg_split('/\W/u',$text); 

Cela fonctionne bien sauf pour les caractères suédois lite åäö. Faire utf8_encode ou décoder n'aide pas non plus. Ma supposition est que preg_split ne fonctionne qu'avec des caractères à un octet et que les caractères suédois sont multi-octets. Y a-t-il un autre moyen de le faire?

+0

Vouliez-vous faire en Perl ainsi? Pourquoi la balise perl est-elle ici? – Ether

+0

Ah, hehe désolé, mais les gens de perl sont généralement mieux avec des expressions régulières :) – Martin

Répondre

3

Pourquoi faites-vous attention à des caractères spécifiques?

$text = "Jag har hört så mycket om dig."; 
$words = explode(" ", $text); 
/* 
Array 
(
    [0] => Jag 
    [1] => har 
    [2] => hört 
    [3] => så 
    [4] => mycket 
    [5] => om 
    [6] => dig. 
) 
*/ 
+0

Ah, je pense que la raison était que je veux diviser sur tout ce qui n'est pas un-ö. Mais peut-être que je pourrais faire une boucle dans le tableau et le faire par la suite? – Martin

+1

Detta är det rätta svaret. – Ether

1

mb_split à la rescousse (moi-même eu des problèmes avec ceux-ci il y a quelque temps, tout à l'heure a trouvé la réponse :)

mb_regex_encoding('UTF-8'); 
mb_split('\W', $text); 

HTH

Questions connexes