String заменить, чтобы заменить пробелы и поддерживать тире - PullRequest
0 голосов
/ 22 апреля 2019

Я пытаюсь преобразовать:

" 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 Ответ

1 голос
/ 22 апреля 2019

Вы можете удалить - из вашего шаблона 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"
...