如何删除空格 + 连字符 + 空格以仅使用 preg_replace url slug 中的连字符

How to remove whitespace + hiphen + whitespace to only hiphen in url slug with preg_replace

我正在使用这个功能。 一切正常,但是当我输入项目标题时:"Example - A digital product" 它显示 url slug 示例---a-digital-product..这里在单词示例之后有 3 个 hiphen 连续。请帮忙解决。

public function item_slug($string){
        $slug=preg_replace(array('/[^A-Za-z0-9 -]+/','/[ -]+/'), array('',''),$string);
       return $slug;
}

您可以在第二个替换中使用连字符,将 1 次或多次出现的 space 或与 [ -]+ 匹配的连字符替换为单个连字符。

示例代码:

function item_slug($string){
    return preg_replace(array('/[^A-Za-z0-9 -]+/','/[ -]+/'), array('','-'),$string);
}

$strings = [
    "example---a-digital-product..",
    "Example - A digital product"
];

foreach ($strings as $str) {
    echo item_slug($str) . PHP_EOL;
}

输出

example-a-digital-product
Example-A-digital-product

Php demo