我正在尝试根据用户名创建 URL,但这样做时遇到一些问题。以下是我正在尝试做的一些示例:
User Name = J.R.R. Tolkien
I want To convert Like THis = j-r-r-tolkien
User Name = Barrie M. Osborne
Convert = barrie-m-osborne
User Name = William Broyles Jr.
Convert = william-broyles-jr
User Name Comma (,) = Harry Waters, Jr.
Convert = harry-waters-jr
这是我的代码:
'name_slug' =\> strtolower(str_replace('.', '', str_replace(' ', '-', empty($name) ? '' : $name))),
这并不适用于所有情况。
您可以定义一个函数来执行此操作,而不是将所有内容都写在一行上。像这样的东西:
function getNameSlug($userName)
{
// turn dots and commas into spaces and trim
$slug = trim(str_replace(['.', ','], ' ', $userName ?? ''));
// reduce double space and replace by dash
return strtolower(str_replace([' ', ' '], [' ', '-'], $slug));
}
此函数首先用空格替换所有点和逗号并修剪结果,然后用单个空格替换双空格,然后用破折号替换。返回结果。
请注意,您可以使用数组对一个
str_replace()
执行多个 str_replace()
操作。我还使用 null 合并运算符将
empty($name) ? '' : $name
替换为 $name ?? ''
。