字符串替换以替换空格并保持破折号

时间:2019-04-22 05:51:54

标签: php string url php-7 slug

我正在尝试转换:

" Long Grain IRRI-6 White Rice "

" long_grain_irri_6_white_rice "

但它正在返回

" long_grain_irri-6_white_rice "

代码如下:

public function phpslug($string){
    $slug = preg_replace('/[^a-z0-9-]+/', '_', strtolower($string));
    return $slug;
}

我希望它不仅删除字母之间的空格,还希望它也删除“-”,以便可以将其替换为“ _”。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您可以从RegEx模式中删除-

function phpslug($string)
{
    $slug = preg_replace('/[^a-z0-9]+/', '_', strtolower(trim($string)));
    return $slug;
}

var_dump(phpslug("  Long Grain IRRI-6 White Rice  "));

或者您可以简化RegEx模式:

function phpslug($string)
{
    $slug = preg_replace('/[-\s]+/', '_', strtolower(trim($string)));
    return $slug;
}

var_dump(phpslug("  Long Grain IRRI-6 White Rice  "));

输出:

 string(28) "long_grain_irri_6_white_rice"