سؤال

هذا المثال يعمل بشكل جيد:

echo preg_replace("/\bI\b/u", 'we', "I can"); // we can

هذه واحدة كانت الحروف الروسية تستخدم لا تعمل على الرغم من أنني أستخدم المعدل "u":

echo preg_replace("/\bЯ\b/u", 'мы', 'Я могу'); // still "Я могу"

إذن السؤال هو ما الذي يجب علي فعله لإصلاح هذا؟
شكرًا.

هل كانت مفيدة؟

المحلول

في PCRE (المكتبة المستخدمة بواسطة preg_replace), \b يشير فقط إلى حدود الكلمات بمعنى ASCII ، أي فقط [a-zA-Z0-9_] هي أحرف كلمة.

إذا كنت تريد مطابقة أ Я الشخصية التي لا تحتوي على حروف أو أرقام أو _ مباشرة قبل أو بعد ، يمكنك استخدام:

(?<![\p{L}0-9_])Я(?![\p{L}0-9_])

لا يزال يتعين عليك استخدام u المعدل.

نصائح أخرى

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top