Php 韩元';t删除字符串中的空格

Php 韩元';t删除字符串中的空格,php,html,Php,Html,我从textarea表单中获取输入,并将其放在长行中。 输入如下: Country: France City: Paris Street: Champ 然后把它排成长队: $line = $_POST['input']; 现在,我需要用和替换空格和新行,所以我要这样做: $line = str_replace(" ","&ltSP&gt",$line); $line = str_replace("\n","&ltBR&gt",$line); $line

我从textarea表单中获取输入,并将其放在长行中。 输入如下:

Country: France

City: Paris

Street: Champ
然后把它排成长队:

$line = $_POST['input'];
现在,我需要用

替换空格和新行,所以我要这样做:

$line = str_replace(" ","&ltSP&gt",$line);
$line = str_replace("\n","&ltBR&gt",$line);
$line = str_replace(" ","",$line);
但我明白了:

Country:<SP>France <BR> <BR>City:<SP>Paris <BR> <BR>Street:<SP>Champ
我得到了类似的结果。如果我同时做这两件事,我会得到相似的结果,这显然有一些空间。那么我就这样做:

$line = str_replace(" ","&ltSP&gt",$line);
$line = str_replace("\n","&ltBR&gt",$line);
$line = str_replace(" ","",$line);
但它保持不变

我的全部代码是:

 $line = str_replace(" ","&ltSP&gt",$line);
 $line = str_replace("\n","&ltBR&gt",$line);
 $line = str_replace(" ","",$line);
 echo $line;
在这种情况下如何删除空格

编辑: 我执行了bin2hex,发现该空格实际上是回车符\r。 这就是解决方案:

$line = str_replace("\r","",$line);

在这种情况下,为什么\r的行为像空格?

这些注释可能就足够了,但我想分享一下这个片段,在你的例子中,我对你想要实现的目标有一个小提示

<?php

// example string data
$str = "key1 value1 key2 value2 key3 value3";

// clean string 
$str = str_replace("&nbsp", " ",$str);
$str = str_replace("\n", " ", $str);
$str = str_replace("\r", " ", $str);

$arr = explode(" ", $str);
$out = "<ul>";
$cnt = 1;

foreach($arr as &$val) {
    if ($cnt++ % 2 == 0) {
        continue;
    } else {
        $out = $out . "<li>" . $val . ": " . current($arr) . "</li>";
    }
}

$out = $out . "</ul>";

echo $out;

// output source
// <ul><li>key1: value1</li><li>key2: value2</li><li>key3: value3</li></ul>

?> 

这些评论可能就足够了,但我想分享一下这个片段,在你的例子中,我对你想要实现的目标进行了一次尝试

<?php

// example string data
$str = "key1 value1 key2 value2 key3 value3";

// clean string 
$str = str_replace("&nbsp", " ",$str);
$str = str_replace("\n", " ", $str);
$str = str_replace("\r", " ", $str);

$arr = explode(" ", $str);
$out = "<ul>";
$cnt = 1;

foreach($arr as &$val) {
    if ($cnt++ % 2 == 0) {
        continue;
    } else {
        $out = $out . "<li>" . $val . ": " . current($arr) . "</li>";
    }
}

$out = $out . "</ul>";

echo $out;

// output source
// <ul><li>key1: value1</li><li>key2: value2</li><li>key3: value3</li></ul>

?> 


您确定您的字符串是一行还是多行?您可能还需要处理特殊的空白字符,如不间断空格。请尝试将
替换为“”。i、 e.
$line=str_替换(“,”,$line)使用字符串的十六进制转储来真正找出您正在处理的字符,请参阅尝试查看源代码,并确保它没有显示
,而不是
'
。如果是这样,请在
上进行字符串替换。在进行任何替换之前,请张贴原始的
$line
,因为它不是
$line=“一些长行”
。您可能有
字符,它是一个空格,但不会被替换为
”。您确定您的字符串是一个长行,还是真的是多行?您可能还需要处理特殊的空白字符,如不间断空格。请尝试将
替换为“”。i、 e.
$line=str_替换(“,”,$line)使用字符串的十六进制转储来真正找出您正在处理的字符,请参阅尝试查看源代码,并确保它没有显示
,而不是
'
。如果是这样,请在
上进行字符串替换。在进行任何替换之前,请张贴原始的
$line
,因为它不是
$line=“一些长行”
。您可能有
字符,它是一个空格,但不会被替换为
”。