Reputation: 646
I want to pass '&' operator in query string. I tried to use urlencode and urldecode but its not working. I am doing this:
$abc="A & B";
$abc2=urlencode($abc);
Then I am passing the value like this
<a href="hello.php?say=<?php echo $abc2 ?>"><?php echo $abc;?></a>
and getting value on next page as
$abc=$_GET['say'];
$abcd=urldecode($abc');
echo $abcd;
but the output is not A & B
What am I doing wrong?
Upvotes: 3
Views: 2905
Reputation: 1464
It seems you have added a single quote next to $abc on line 2 in the below code:
$abc = $_GET['say'];
$abcd = urldecode($abc);
echo $abcd;
Upvotes: 0
Reputation: 1210
& is a special HTML characters, you need to convert it to &
.
Try this:
$abc = "A & B";
<a href="hello.php?say=<?php echo htmlentities($abc); ?>"><?php echo $abc; ?></a>
Upvotes: -1
Reputation: 605
Basically it should work I tried the following on my webserver:
$a = 'A & B';
echo urlencode($a);
echo '<br />';
echo urldecode(urlencode($a));
Output
A+%26+B
A & B
I guess you have another logically or syntax error which causes your & not to be decoded correctly, in your code there's an apostroph in your urldecode()-syntax.
Is that all of your code or are you using a "similiar" one? your original code would be useful then.
Upvotes: 2
Reputation: 17752
Try this:
$url = '?' . http_build_query(array(
'say' => 'A & B'
));
// Then just:
echo $_GET['say'];
Live example: http://codepad.viper-7.com/ibH79a?say=A+%26+B
Upvotes: 2