首页 > 解决方案 > 如何使用 preg_replace 删除空格 + hiphen + 空格以仅在 url slug 中使用 hiphen

问题描述

我正在使用这个功能。一切正常,但是当我输入项目标题时,例如:“示例 - 数字产品”,它会在 url slug 示例中显示我---a-digital-product..在单词示例之后有 3 个连续的 hihen。请帮忙解决。

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

标签: preg-replaceslugremoving-whitespace

解决方案


您可以在第二次替换中使用连字符来[ -]+ 用单个连字符替换匹配的 1 次或多次出现的空格或连字符。

示例代码:

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演示


推荐阅读