2012-10-23 20 views
5

Chcę usunąć wszystkich nie-arabskich, nie angielskich i nie-liczbowych charecters z ciągu, z wyjątkiem kresek (-).Pozbądź się znaków alfanumerycznych z arabskiego UTF8 + ciąg angielski

udało mi się to zrobić dla niezarejestrowanych angielskich znaków alfanumerycznych tak:

$slug = ereg_replace('[^A-Za-z0-9-]', '', $string); 

Ale dla arabskiego niezarejestrowanych znaków alfanumerycznych próbowałem to zrobić tak:

$slug = ereg_replace('\p{InArabic}', '', $string); 

ale zrobił to rozebrać nie alfanumeryczne znaki! Próbowałem też this answer ale nie działało, zawsze zwraca '0' !!

$slug = preg_replace('/[^\x{0600}-\x{06FF}A-Za-z0-9-]/u','', $string); 

Mam nadzieję, że ktoś może mi pomóc.

+1

'ereg_replace' jest przestarzała. Powinien działać regex z 'preg_replace'. Czy możesz podać ciągi próbne tam, gdzie to nie działa? – Toto

+0

Co to jest wyjście z 'preg_last_error()'? Fragment kodu działa. –

+0

Dziękuję M42, które działało z pomocą odpowiedzi "xdazz", dziękuję wszystkim. –

Odpowiedz

9

Spróbuj poniżej:

$slug = preg_replace('/[^\p{Arabic}\da-z-]/ui', '', $string); 
+0

Dzięki alot xdazz, który działał jak czar! –

+0

@WaleedAsender Nie ma za co :) – xdazz

+0

Dobra, zadziałała dla mnie, dzięki –

Powiązane problemy