PHP амперсанд в строке - PullRequest
7 голосов
/ 18 июня 2010

У меня небольшая проблема.Я пытаюсь создать IRC-бота, в пароле которого есть амперсанд.Тем не менее, я испытываю затруднения, помещая амперсанд в строку.Например ...

<?php

$var = "g&abc123";

echo $var;

?>

Я считаю, что это должно вывести g&abc123.Однако он печатает g.

Я тоже пробовал это:

<?php
$arr = array("key" => "g&abc123");
print_r($arr);
?>

Это печатает правильно с g&abc123, однако, когда я говорю echo $arr['key'];, оно печатает g снова.Любая помощь будет оценена.Я использую PHP5.3.1.

EDIT : Кроме того, я только что заметил, что, если я использую g&abc123&abc123, он печатает g&abc123.Есть предложения?

Ответы [ 4 ]

6 голосов
/ 18 июня 2010

У меня нет этой проблемы в консоли:

php > $d="g&abc123";
php > echo $d;
g&abc123

В какой среде вы печатаете вывод? Похоже, вы просматриваете его в веб-браузере, а символ & интерпретируется как искаженная сущность HTML. Попробуйте заменить символ & на кодировку версии &amp;.

6 голосов
/ 18 июня 2010

Посмотрите на исходный код, он будет печатать правильный код.

Если вы хотите, чтобы он правильно печатался в HTML, запустите на нем htmlentities или сделайте & &amp;

1 голос
/ 18 июня 2010

Вы, вероятно, отправляете свои выходные данные в веб-браузер.

Правильный способ сделать это -

В HTML, XHTML и XML амперсанд имеет особое значение.Используется для персонажей.Вы можете думать об этом как о escape-последовательности своего рода.

Например, в PHP это было бы недопустимо:

$variable = 'It's Friday';

Это потому, что апостроф интерпретируется PHP как конецвашей строки, а остальное содержимое выглядит как мусор.

Вместо этого вы должны сказать:

$variable = 'It\'s Friday';

Аналогично, в HTML и XHTML вы не можете сказать

<h1>Inequalities</h1>
<p> x<yz+3 </p>

Это потому, что он будет интерпретирован как элемент.

Вместо этого вам нужно будет сказать:

<h1>Inequalities</h1>
<p> x&lt;yz+3 </p>

Теперь, как вы можете видеть,Амперсанд сам по себе имеет особое значение и поэтому должен быть экранирован как &.htmlspecialchars () сделает это за вас.

1 голос
/ 18 июня 2010

Просмотрите исходный веб-сайт, чтобы убедиться, что ваша переменная содержит правильное значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...