用下划线替换空格

我有一个 PHP 脚本,用户将输入一个名称,如: Alex_Newton,

但是,有些用户会使用空格而不是下划线,因此我的问题是:

如何在 PHP 中用下划线自动替换空格?

257208 次浏览
$name = str_replace(' ', '_', $name);

使用 PHP 的 Str _ place函数。

比如:

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

呼叫 http://php.net/str_replace: $input = str_replace(' ', '_', $input);

使用 Str _ place:

str_replace(" ","_","Alex Newton");
$name = str_replace(' ', '_', $name);

Http://php.net/manual/en/function.str-replace.php

这是我的代码的一部分,它在我的文件命名中使用下划线:

$file = basename($_FILES['upload']['name']);
$file = str_replace(' ','_',$file);

由于其他人已经解释了如何使用 str_replace实现这一点,因此您也可以使用正则表达式来实现这一点。

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

您也可以这样做,以防止单词开始或结束时使用下划线,如 _ words _ more _ words _,这将避免开始和结束时使用空格。

$trimmed = trim($string); // Trims both ends
$convert = str_replace('', '_', $trimmed);

我以前是这样的

$option = trim($option);
$option = str_replace(' ', '_', $option);

Strtr替换单个字符而不是字符串,所以对于这个示例来说,这是一个很好的解决方案。据推测,strtrstr_replace更快(但在这个用例中,它们都快得不可思议)。

echo strtr('Alex Newton',' ','_');
//outputs: Alex_Newton

你可以使用 str_replace说你的名字是在变量 $name

$result = str_replace(' ', '_', $name);

另一种方法是使用正则表达式,因为它将有助于消除2时间空间等。

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

这是显而易见的解决方案。但是有时候你需要知道到底有哪些空格。CSV 文件中的空格有问题。

有两个字符,但其中一个是0160(0x0A0) ,另一个是不可见的(0x0C2)

我的最终解决方案:

$str = preg_replace('/\xC2\xA0+/', '', $str);

我发现了来自 mc (午夜查看器 -F3-F9)的 HEX 查看器的隐形符号

如果您有一个参数 $string,并且希望替换它的 apace 来下划线(_)。

$string = "Hello All.";
$newString = str_replace(' ', '_', $string);

输出为 Hello_All.