özel karakterler vs çeviri harfler

2 Cevap php

Ben karışık karakterler, özel karakterler ve 'aksan' karakterleri, vb olabilir veri bir sürü var

I've been using php inconv with translit, but noticed today that a bullet point gets converted to 'bull'. I don't know what other characters like this don't get converted or deleted. $, *, %, etc do get removed.

Temelde ne yapmaya çalışıyorum harfleri tutmak, ama sadece 'non-dili' bit kaldırmak olduğunu.

Bu kullanarak oldum kodudur


        $slugIt = @iconv('UTF-8', 'ASCII//TRANSLIT', $slugIt);  

    $slugIt = preg_replace("/[^a-zA-Z0-9 -]/", "", $slugIt); 

Ben inconv işlevi üzerinde olması preg_replace hareket halinde tercüme önce tabii ki, aksan karakterleri silinecektir, böylece ya çalışmıyor.

Bu konuda herhangi bir fikir? ya da ne harf olmayan karakterleri translite cevapsız edilir?

---------------------Edited--------------------------------- Strangely, it doesn't appear to be the TRANSLIT which is changing a bullet to 'bull'. I commented out the preg-replace, and the 'bull' has been returned to a bullet point. Unfortunately I'm trying to use this to create readable urls, as well as a few other things, so I would still need to do url encoding.

2 Cevap

Eğer POSIX Regex kullanarak deneyebilirsiniz:

$slugIt = ereg_replace('[^[:alnum:] -]', '', $slugIt);
$slugIt = @iconv('UTF-8', 'ASCII//TRANSLIT', $slugIt);

[:alnum:] will match any alpha numeric character (including the ones with accent).
Take a look at http://php.net/manual/en/book.regex.php for more information on PHP's POSIX implementation.

Sonunda bu set yanlış karakterin bir arada olduğu ortaya çıktı, VE nasıl pencereler inconv işler.

Her şeyden önce, ben gitmeden bir iso-8859 karakter kümesi vardı, ve ben belgenin baş utf-8 tanımlayan olsa bile, php hala ISO gibi CharacterSet tedavi edildi.

Windows iconv kullanırken İkincisi, görünüşe ASCII / / translite birleştirebilirsiniz olamaz / / minnetle windows yapabileceği, hangi IGNORE.

Şimdi linux üzerinde, tüm aksanlı karakterler baz karakter çevrilir, ve non-alfa Rakamsal kaldırılır.

İşte yeni kod

  $slugIt = @iconv('iso-8859-1', 'ASCII//TRANSLIT//IGNORE', $slugIt);  
    $slugIt = preg_replace("/[^a-zA-Z0-9]/", "", $slugIt);