Амперсанд PHP в строке

У меня есть определенная проблема. Я пытаюсь создать бота 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.

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

7
задан Danubian Sailor 18 October 2013 в 06:40
поделиться

4 ответа

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

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

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

6
ответ дан 6 December 2019 в 15:18
поделиться

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

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

6
ответ дан 6 December 2019 в 15:18
поделиться

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

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

В 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
ответ дан 6 December 2019 в 15:18
поделиться

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

1
ответ дан 6 December 2019 в 15:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: