PHP str_replace 将空格替换为下划线

85

我没有看到任何原因,解释为什么这不起作用。

    $string = $someLongUserGeneratedString;
    $replaced = str_replace(' ', '_', $string);
    echo $replaced;

输出结果仍包含空格... 有任何想法都会很棒

4个回答

206

我建议您使用此方法,因为它将检查空格的单个和多个出现(如Lucas Green所建议的)。

$journalName = preg_replace('/\s+/', '_', $journalName);

使用以下代码代替:

$journalName = str_replace(' ', '_', $journalName);

它使用正则表达式来匹配给定模式中的一类字符串,并在匹配时用替换序列替换它。 - Lucas Green
2
这个版本有一个错误,它只能匹配两个或两个以上的空格组。 - Lucas Green
3
@LucasGreen,你说得对!正确的写法是:preg_replace('/\s+/', '_', $journalName); - Laurent Brieu
4
您可能也想要修剪内容:preg_replace('/\s+/', '_', trim($journalName)); 这行代码的作用是将字符串中的空格替换为下划线,并去除开头和结尾的空格。 - Andrew
对于UTF-8编码,请使用preg_replace('/\s+/u', '_', $journalName) - Alliswell

23

试试这个:

$journalName = preg_replace('/\s+/', '_', $journalName);

解释:你很可能看到的是空格而不仅仅是普通的空格(它们是有区别的)。


12

要替换一个匹配的字符,请使用 str_replace

$string = str_replace(' ', '_', $string);

对于所有匹配的字符替换,请使用 preg_replace

$string = preg_replace('/\s+/', '_', $string);

-2

试试这个:

$journalName = str_replace(' ', '_', $journalName);

去除空格


2
除了变量名称之外,这与问题中提供的代码有何不同?$replaced = str_replace(' ', '_', $string); - Ash Oldershaw

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