هل من الممكن تحويل الأحرف الصغيرة إلى أحرف كبيرة وإزالة اللهجات في نفس الوظيفة باستخدام PHP؟

0

أنا أكتب رمز PHP حيث $posted_data['name'] هو متغيري. من أجل تحويلها إلى أحرف كبيرة ، أستخدم ما يلي: (والذي يعمل بشكل جيد)

$uppercase = $posted_data['name'];
$uppercase = strtoupper($uppercase);

ومع ذلك ، فأنا على استعداد لمعرفة ما إذا كان من الممكن تنفيذ وظيفة أخرى في نفس السطر إزالة حرف تمييز أو طريقة تنظيف للقيام بذلك.

على سبيل المثال:

إدخال سلسلة المستخدم: جواو

إخراج السلسلة: JOAO

لذلك ، هناك وظيفتان تعملان هنا في هذه الحالة المرغوبة: واحدة للتحويل من الأحرف الصغيرة إلى الأحرف الكبيرة والأخرى لإزالة اللكنات.

2 الاجابة

1
افضل جواب

هناك بعض السحر هنا حيث يحول علامات التشكيل إلى أحرف غير مشفرة ثم يحول الحروف إلى أحرف كبيرة.

<?php

function slug($string) {
    return strtoupper(trim(preg_replace('~&([a-z]{1,2})(acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i', '$1', htmlentities($string, ENT_QUOTES, 'UTF-8')), ' '));
}

$string = 'João';
echo slug($string);

تجريبي

في ما يلي نفس المثال مقسمًا إلى أسطر منفصلة لكل استدعاء دالة لجعل كيفية عملها أكثر وضوحًا:

function slug($string) {
    $str = htmlentities($string, ENT_QUOTES, 'UTF-8');
    $str = preg_replace('~&([a-z]{1,2})(acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i', '$1', $str);
    $str = trim($str, ' ');
    return strtoupper($str);
}
:مؤلف
0

يمكن لـ PHPs unicode support (ext / intl) القيام بذلك في مكالمة واحدة:

$string = 'Hello ÄöÜ!';
var_dump(
    \Transliterator::create('Any-Upper; Latin-ASCII')->transliterate($string)
);

انتاج:

string(10) "HELLO AOU!"
:مؤلف
فوق
قائمة طعام