2010-09-06 10 views
20

jaki sposób można analizować ciąg, aby usunąć wszystkie znaki spoza języka angielskiego w phpusunięcia nie angielskich znaków PHP

teraz chcę usunąć rzeczy jak

სოფო ნი

Dzięki :)

+0

Zakładam, że oznaczać niełacińskie/rzymskie znaki alfabetu. –

+0

Tak, przepraszam, to właśnie miałem na myśli –

Odpowiedz

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

Bardzo ładnie wykonane. Nauczyłem się czegoś nowego! –

+1

Cieszę się, że mogę pomóc i podzielić się wiedzą :) – aularon

+0

Oktalacja od 0 do 255, czyli dziesiętnie od 0 do 173? – Gumbo

5

korzystając preg_replace()

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

echo $string; 

przyznane, będziesz musiał rozwinąć wzór preg_replace, ale jest to jeden sposób, aby to zrobić. Prawdopodobnie jest lepszy sposób, po prostu o tym nie wiem.

-1

użyć tego kodu:

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

musiałbyś porównać ze wszystkimi nie angielskimi znakami. –

+0

Zwykle stosowałbym podejście "białą listę", a nie "czarną listę". To znaczy, chciałbym, aby rutyna identyfikowała znaki, które powinny być przechowywane, te znaki, które _ARE_ "angielskie znaki" i eliminuje resztę, zamiast próbować zidentyfikować znaki, które powinny zostać usunięte. – spencer7593

6

Najlepszym rozwiązaniem byłoby przy użyciu iconv, która zamienia ciągi do żądanej kodowania znaków.

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

z //translit uzyskać znaczącą przemianę ASCII (np SS -> SS). Używanie // IGNORE spowoduje całkowite usunięcie znaków spoza zestawu ASCII.

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

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

Powiązane problemy