2010-09-06 8 views
20

comment puis-je analyser une chaîne pour supprimer tous les caractères non anglais en phpnon Caractères anglais PHP

en ce moment je veux supprimer des choses comme

სოფო ნი

Merci :)

+0

Je suppose que vous parlez des caractères alphabétiques non latins/romains. –

+0

ouais désolé c'est ce que je voulais dire –

Répondre

45
$str = preg_replace('/[^\00-\255]+/u', '', $str); 
+1

Très bien fait. J'ai appris quelque chose de nouveau! –

+1

Je suis heureux que je peux aider et partager les connaissances :) – aularon

+0

Octal 0 à 255, donc décimal 0 à 173? – Gumbo

5

En utilisant preg_replace()

$string = "some სოფო text"; 
$string = preg_replace('/[^a-z0-9_ ]/i', '', $string); 

echo $string; 

Certes, vous devrez développer le modèle preg_replace, mais c'est une façon de le faire. Il y a probablement un meilleur moyen, je ne le sais tout simplement pas.

-1

utilisent ce code:

$illegalChars = array("",); 
$string = str_replace($illegalChars,"",$string); 
echo $string; 
+0

vous auriez besoin de comparer avec tous les caractères non-anglais –

+0

J'aurais tendance à utiliser une approche "liste blanche" plutôt qu'une approche "liste noire". C'est-à-dire, je voudrais que la routine identifie les caractères qui devraient être gardés, ces caractères qui _ARE_ "caractères anglais" et éliminant le reste, plutôt qu'essayant d'identifier les caractères qui devraient être enlevés. – spencer7593

6

Votre meilleure option serait d'utiliser iconv, qui convertit les chaînes de codage de caractères demandé.

iconv('UTF-8', 'ASCII//TRANSLIT', $yourtext); 

avec //translit vous obtenez une conversion significative en ASCII (par exemple ß -> ss). L'utilisation de // IGNORE supprimera complètement les caractères non-ascii.

iconv('UTF-8', 'ASCII//IGNORE', $yourtext); 

Voir http://php.net/manual/en/function.iconv.php

Questions connexes