Manoj Kumar
Manoj Kumar

Reputation: 646

Passing & in query string

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

Answers (4)

Mahavir Munot
Mahavir Munot

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

Muhammad Alvin
Muhammad Alvin

Reputation: 1210

& is a special HTML characters, you need to convert it to &amp;.

Try this:

$abc = "A & B";
<a href="hello.php?say=<?php echo htmlentities($abc); ?>"><?php echo $abc; ?></a>

Upvotes: -1

peipst9lker
peipst9lker

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

Mārtiņš Briedis
Mārtiņš Briedis

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

Related Questions