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

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

我想转换:

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

我希望它不仅删除字母之间的空格,我还需要删除“ - ”这个,所以它可以替换为“_”。

我该如何解决这个问题?

php string url php-7 slug
1个回答
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  "));

Output:

 string(28) "long_grain_irri_6_white_rice"
© www.soinside.com 2019 - 2024. All rights reserved.