2012-10-23 7 views
5

Ich möchte alle nicht arabischen, nicht englischen und nicht-numerischen Zeichen aus einer Zeichenfolge entfernen, mit Ausnahme von Bindestrichen (-).Nicht alphanumerische Zeichen aus dem Arabischen entfernen UTF8 + Englische Zeichenfolge

schaffte ich es für nicht Englisch alphanumerische Zeichen wie dies zu tun:

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

aber es hat nicht den Streifen:

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

Aber für nicht arabisch alphanumerische Zeichen i es, wie dies zu tun versucht, nicht alphanumerische Zeichen! Ich versuchte auch this answer, aber es funktionierte auch nicht, es gibt immer '0' zurück !!

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

Hoffentlich kann mir jemand helfen.

+1

'ereg_replace' veraltet. Die Regex mit 'preg_replace' sollte funktionieren. Können Sie Beispielzeichenfolgen bereitstellen, in denen es nicht funktioniert? – Toto

+0

Was ist die Ausgabe von 'preg_last_error()'? Das Code-Snippet funktioniert. –

+0

Danke M42, das mit Hilfe von "xdazz" funktioniert hat, vielen Dank euch allen. –

Antwort

9

Versuchen Sie die folgenden:

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

Vielen Dank xdazz, die wie ein Charme funktionierte! –

+0

@WaleedAsender Sie sind herzlich willkommen :) – xdazz

+0

gute, arbeitete für mich, danke –