2012-10-23 53 views
5

Tôi muốn xóa tất cả các đối tượng không phải là tiếng Ả Rập, không phải tiếng Anh và không phải số từ một chuỗi, ngoại trừ dấu gạch ngang (-).Dải ký tự không phải chữ và số từ tiếng Ả Rập UTF8 + Chuỗi tiếng Anh

tôi quản lý để làm điều đó cho ký tự chữ và tiếng Anh không như thế này:

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

Nhưng đối với không ký tự chữ arabic tôi đã cố gắng để làm điều đó như thế này:

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

nhưng nó didnt dải ký tự không phải chữ số! Tôi cũng đã thử this answer nhưng nó cũng không hoạt động, nó luôn trả về '0' !!

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

Hy vọng ai đó có thể giúp tôi.

+1

'ereg_replace' bị phản đối. Regex với 'preg_replace' sẽ hoạt động. Bạn có thể cung cấp các chuỗi mẫu mà nó không hoạt động không? – Toto

+0

Đầu ra của 'preg_last_error()' là gì? Đoạn mã hoạt động. –

+0

Cảm ơn bạn M42, đã làm việc với sự giúp đỡ của câu trả lời "xdazz", cảm ơn tất cả các bạn. –

Trả lời

9

Thử dưới đây:

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

Cảm ơn rất nhiều xdazz đã làm việc như một sự quyến rũ! –

+0

@WaleedAsender Bạn được chào đón :) – xdazz

+0

tốt nhất, làm việc cho tôi, nhờ –

Các vấn đề liên quan