PHP:规范化字符串
我想将字符串规范化(以便规范化)为名称的标准形式:PHP:规范化字符串,php,string,normalize,Php,String,Normalize,我想将字符串规范化(以便规范化)为名称的标准形式: 名字的第一个字母是大写的 现在的困难是,要用第二个和第三个名字来遵循这条规则 我的方法: public function namilize($string) { $strings = explode(' ', $string); foreach ($strings as $string) { $string = ucfirst(strtolower($string)); } $string
public function namilize($string)
{
$strings = explode(' ', $string);
foreach ($strings as $string) {
$string = ucfirst(strtolower($string));
}
$string = implode(' ', $strings);
return $string;
}
不知怎的
$string = ucfirst(strtolower($string));
失败了
我必须纠正什么?
有更好的办法吗
问候
编辑:
嗨
谢谢大家的评论和回答。
我找到了另一种“现代”方法:
当我现在要为Mc和O添加一些正则表达式时,要比它完整的多:)您必须通过引用传递$string,请注意
&
:
public function namilize($string)
{
$strings = explode(' ', $string);
foreach ($strings as &$string) {
$string = ucfirst(strtolower($string));
}
$string = implode(' ', $strings);
return $string;
}
或者使用
ucwords($string)
建议的函数。您必须通过引用传递$string,请注意&
:
public function namilize($string)
{
$strings = explode(' ', $string);
foreach ($strings as &$string) {
$string = ucfirst(strtolower($string));
}
$string = implode(' ', $strings);
return $string;
}
或者使用ucwords($string)
请注意,这将适用于诸如John O'Brian
、James McManus
等名称。对于前缀为McManus
的其他名称,只需将前缀添加到preg_match()
。显然,这有可能出现误报,但没有一种方法是100%万无一失的
请注意,这将适用于诸如
John O'Brian
、James McManus
等名称。对于前缀为McManus
的其他名称,只需将前缀添加到preg_match()
。显然,这有可能出现误报,但没有一种方法是100%万无一失的。foreach中的$string将只存储最后一次迭代(或姓氏)。但这并不重要,因为foreach中的变量从未用于输出。内爆只会撤消您对爆炸所做的操作,因此最终将得到与输入完全相同的输出。在本例中,我将变量名更改为更具描述性:
function namilize($name_in)
{
$a_names = explode(' ', $name_in); //explode string into array
foreach ($a_names as $name) {
$a_fullname[] = ucfirst(strtolower($name)); //build array of proper case names
}
$string = implode(' ', $a_fullname); //convert array into string
return $string;
}
foreach中的$string将只存储最后一次迭代(或姓氏)。但这并不重要,因为foreach中的变量从未用于输出。内爆只会撤消您对爆炸所做的操作,因此最终将得到与输入完全相同的输出。在本例中,我将变量名更改为更具描述性:
function namilize($name_in)
{
$a_names = explode(' ', $name_in); //explode string into array
foreach ($a_names as $name) {
$a_fullname[] = ucfirst(strtolower($name)); //build array of proper case names
}
$string = implode(' ', $a_fullname); //convert array into string
return $string;
}
我完全不明白你为什么要首先分解
$string
。你打算怎么处理像McVeigh这样的名字?我完全不明白你为什么要首先分解$string
。你打算怎么处理像McVeigh这样的名字?