Reputation: 1632
I'm taking input from textarea form and put it in the long line. Input is like this:
Country: France
City: Paris
Street: Champ
Then put it in the long line:
$line = $_POST['input'];
now, I need to replace spaces and new lines with <SP> and <BR>
, so I do this:
$line = str_replace(" ","<SP>",$line);
$line = str_replace("\n","<BR>",$line);
but I get this:
Country:<SP>France <BR> <BR>City:<SP>Paris <BR> <BR>Street:<SP>Champ
Now, if insted of \n I tried this:
$line = str_replace("\r","<BR>",$line);
I get similar result. If I do them both i Get similar results which obviously has some spaces in it. So Then I do this:
$line = str_replace(" ","",$line);
but it stays the same.
My whole code is:
$line = str_replace(" ","<SP>",$line);
$line = str_replace("\n","<BR>",$line);
$line = str_replace(" ","",$line);
echo $line;
How to remove spaces in this case?
Edit: I did bin2hex and found out that the space is actually carriage return \r. So this is the solution:
$line = str_replace("\r","",$line);
Why did \r behave like space in this case?
Upvotes: 1
Views: 416
Reputation: 9933
the comments will probably suffice but I thought I'd share this snippet, which given your example I had a punt at what you are trying to achieve.
<?php
// example string data
$str = "key1 value1 key2 value2 key3 value3";
// clean string
$str = str_replace(" ", " ",$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>
?>
Upvotes: 1