我有一个 PHP 脚本,用户将输入一个名称,如: Alex_Newton,
Alex_Newton
但是,有些用户会使用空格而不是下划线,因此我的问题是:
如何在 PHP 中用下划线自动替换空格?
$name = str_replace(' ', '_', $name);
使用 PHP 的 Str _ place函数。
比如:
$str = str_replace(' ', '_', $str);
呼叫 http://php.net/str_replace: $input = str_replace(' ', '_', $input);
$input = str_replace(' ', '_', $input);
使用 Str _ place:
str_replace(" ","_","Alex Newton");
Http://php.net/manual/en/function.str-replace.php
这是我的代码的一部分,它在我的文件命名中使用下划线:
$file = basename($_FILES['upload']['name']); $file = str_replace(' ','_',$file);
由于其他人已经解释了如何使用 str_replace实现这一点,因此您也可以使用正则表达式来实现这一点。
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替换单个字符而不是字符串,所以对于这个示例来说,这是一个很好的解决方案。据推测,strtr比 str_replace更快(但在这个用例中,它们都快得不可思议)。
Strtr
strtr
echo strtr('Alex Newton',' ','_'); //outputs: Alex_Newton
你可以使用 str_replace说你的名字是在变量 $name
$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
$string = "Hello All."; $newString = str_replace(' ', '_', $string);
输出为 Hello_All.
Hello_All.