在同一个字符串中将逗号或空格替换为连字符

4
我需要PHP代码来将逗号或空格替换为连字符。
例如:如果$value = 'home garden' 或者 $value = 'home,garden',我需要的结果是home-garden。
我尝试了$result = preg_replace('/\s+[\,]/', '-', trim($value));,但无效。
有人能解释一下吗?

正如你所想,正则表达式并不是你要找的东西。你可能想学习一下字符类 - hakre
3个回答

16
$result = preg_replace('/[ ,]+/', '-', trim($value));

测试:

$value = '  home  ,garden , gardener  ';
$result = preg_replace('/[ ,]+/', '-', trim($value));

echo $result;
//home-garden-gardener

12

$result = str_replace(array(',', ' '), '-', $value);

的意思是将变量$value中的逗号和空格替换为短横线,并将结果存储在变量$result中。

3
不知道为什么其他人要制定如此复杂的解决方案,而这个显然是最快最正确的 :) - Luceos
你为什么删除了结尾的修整(trim)? - Esailija
1
是的,应该保留 trim 函数,否则开头/结尾处的空格(如果有)将被转换为连字符。 - xiankai
@Robin v. G.:谢谢您的回复。它确实有效。但是,如果字符串包含多个空格或逗号后跟一个空格,则结果会给出两个连续的连字符…我们如何将其变成单个连字符? - Micku

1
    $stringAfter = str_replace(",", "-",$stringBefore);

    example:
    $stringBefore="abc,def,ghi";
    $stringAfter = str_replace(",", "-",$stringBefore);
    print $stringAfter;

    Output:
   `abc-def-ghi`

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接