如何从名称中删除点(.)和逗号(,)

问题描述 投票:0回答:1

我正在尝试根据用户名创建 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))),

这并不适用于所有情况。

php
1个回答
1
投票

您可以定义一个函数来执行此操作,而不是将所有内容都写在一行上。像这样的东西:

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

现场演示:https://3v4l.org/AdnrH

此函数首先用空格替换所有点和逗号并修剪结果,然后用单个空格替换双空格,然后用破折号替换。返回结果。

请注意,您可以使用数组对一个

str_replace()
执行多个
str_replace()
操作。我还使用
null 合并运算符
empty($name) ? '' : $name
替换为 $name ?? ''

© www.soinside.com 2019 - 2024. All rights reserved.