我正在尝试从数据库中获取产品名称并重写它们,名称如下:

Romper bedrukt met tekst - Lime maat 68

这是我的重写:
$string = preg_replace("/[^ \w]+/", "", $testlink['name']);
$string = str_replace(" ", "-", $string);

当名称为:
Romper bedrukt met tekst - Lime maat 68

它需要这样做:
Romper-bedrukt-met-tekst-Lime-maat-68

但它做到了:
Romper-bedrukt-met-tekst--Lime-maat-68

您可以看到double--,因为在第一个preg replace中,除了数字和字母之外,我删除了所有奇怪的字符,但是当一个名称已经包含a-,就会有两个空格。我的第二个替代品是两个--。
我怎样才能让它工作?

最佳答案

你也许可以做这样简单的事情:

$string = 'Romper bedrukt met tekst - Lime maat 68';
$slug = preg_replace('/\W+/', '-', $string));

关于php - 用-代替空间,但不使用-代替,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28562557/

10-09 20:29