gpt4 book ai didi

php - 如何用连字符替换点、空格和逗号并避免使用 php 出现双连字符?

转载 作者:行者123 更新时间:2023-12-03 23:29:17 25 4
gpt4 key购买 nike

当我替换字符串的空格、点和逗号时,有时会出现双连字符。

例如将check out the 1.place变成check-out-the-1--place

我怎样才能避免这种情况?我希望它是 check-out-the-1-place - 这样每个单词之间只有一个连字符。这是我的代码:

str_replace([' ', ',', '.','?'], '-', strtolower($pathname));

现在,我知道它为什么返回双连字符,但我不知道如何解决这个问题。

谁能帮帮我?

最佳答案

How can I avoid that? I want it to be check-out-the-1-place - so that there only is one hyphen between each word. Here is my code:

虽然 Mohammad's answer 几乎在那里,这是一个更完整的工作PCRE regex方法和工作原理的解释,以便您根据需要使用它:

$str = trim(strtolower($pathname));
$newStr = preg_replace('/[\s.,-]+/', '-', $str);

这是如何工作的:

  • 匹配下面列表中的单个字符[\s.,-]+
    • + 量词匹配一次到无限次次,尽可能多次,按需回馈(贪婪)
    • \s 匹配任何空白字符(等于 [\r\n\t\f\v])
    • .,- 匹配列表中的单个字符 .,-(区分大小写)
    • 破折号 - 必须位于 [] 集合的 end 处。

结果:

This: check out the 1. place

变成:

check-out-the-1-place

还有

This: check out the - 1. place

变成

check-out-the-1-place


进一步:

我会更进一步,假设您将它用于 URL slug (a what?!);从字符串中去除 所有 个非字母数字字符,并按照典型的网站 slug 替换为单个 -

 $newStr = preg_replace('/[^a-z0-9]+/i', '-', $str);

这是如何工作的:

  • 匹配 [a-z0-9]+ 列表中出现的单个字符 NOT (^)
    • + 量词匹配一次到无限次次,尽可能多次,按需回馈(贪婪)
    • a-z a(索引 97)和 z(索引 122)之间的单个字符(区分大小写)
    • 0-9 0(索引 48)和 9(索引 57)之间的单个字符(区分大小写)
    • 末尾的i表示判断不区分大小写

例子:

check out - the no.! 1. Place

变成:

check-out-the-1-Place

关于php - 如何用连字符替换点、空格和逗号并避免使用 php 出现双连字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52532091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com