是否可以使用PHP将小写转换为大写并删除同一函数中的重音符号?

是否可以使用PHP将小写转换为大写并删除同一函数中的重音符号?,php,xml,diacritics,Php,Xml,Diacritics,我正在编写一个PHP代码,其中$posted\u data['name']是我的变量。 为了将其转换为大写字母,我使用了以下内容:(这很好) 然而,我想知道是否有可能在同一行中实现另一个功能,即字母重读删除或清理方法 例如: 用户字符串输入:João 字符串输出:JOAO 因此,在这种情况下,有两个函数在这里运行:一个是从小写转换为大写,另一个是删除重音。这里有一些神奇之处,它将变音符号转换为非变音字符,然后将字母转换为大写 <?php function slug($string) {

我正在编写一个PHP代码,其中
$posted\u data['name']
是我的变量。 为了将其转换为大写字母,我使用了以下内容:(这很好)

然而,我想知道是否有可能在同一行中实现另一个功能,即字母重读删除或清理方法

例如:

用户字符串输入:João

字符串输出:JOAO


因此,在这种情况下,有两个函数在这里运行:一个是从小写转换为大写,另一个是删除重音。

这里有一些神奇之处,它将变音符号转换为非变音字符,然后将字母转换为大写

<?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);

这里有一些神奇之处,它将变音符号转换为非变音字符,然后将字母转换为大写

<?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);
PHPs unicode支持(ext/intl)可以在一次调用中实现这一点:

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

string(10) "HELLO AOU!"
PHPs unicode支持(ext/intl)可以在一次调用中实现这一点:

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

string(10) "HELLO AOU!"

无论何时,只要您想获取该值,就可以调用它。它看起来像是在您刚刚发布的代码行之前,我会说将这一行放在它上面:
$name=slug($posted_data['name'])
然后使用
$domElement=$domDocument->createElement('attribute',$name')是的,这正是您使用它的方式。它正在运行OK:-)在您想要捕获该值时调用它。它看起来像是在您刚刚发布的代码行之前,我会说将这一行放在它上面:
$name=slug($posted_data['name'])
然后使用
$domElement=$domDocument->createElement('attribute',$name')是的,这正是你使用它的方式。它运行正常:-)有可能,到目前为止你打了什么?有可能,到目前为止你打了什么?