Won& #39;t删除字符串中的空格


won't remove spaces in string

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

Country: France
City: Paris
Street: Champ

然后把它放在长行中:

$line = $_POST['input'];

现在,我需要用<SP> and <BR>替换空格和新行,所以我这样做:

$line = str_replace(" ","&ltSP&gt",$line);
$line = str_replace("'n","&ltBR&gt",$line);

但是我得到了这个:

Country:<SP>France <BR> <BR>City:<SP>Paris <BR> <BR>Street:<SP>Champ

现在,如果不是'n,我试了这个:

$line = str_replace("'r","&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>
?>