حدود الكلمة على الأحرف غير اللاتينية في PHP
-
02-10-2019 - |
سؤال
هذا المثال يعمل بشكل جيد:
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
المعدل.
نصائح أخرى
حدود الكلمات في كثير من الأحيان مضاد بديهية.
لا تنتمي إلى StackOverflow