Ampersand no final da cadeia não visíveis no navegador
Pergunta
Estou imprimir uma string como abaixo
Código:
echo "&words=".$rs['pw']."&";
Output:
& palavras = Ajuda | Boa
Observe que o último &
não é impresso.
Mas quando eu adicionar um caractere de espaço após &
então ele será impresso como abaixo
Código:
echo "&words=".$rs['pw']."& ";
Output:
& palavras = Ajuda | Good &
Agora &
é impresso.
Por seu acontecimento e que é a razão para este comportamento?
Solução
Se você estiver saída para um navegador web você deve estar escapando do & usando &
"&" em HTML é muito usada para escapar cordas, e no URL do modo é um char especial, como <> etc.
Outras dicas
Se você está mostrando o seu conteúdo em uma página da web, o navegador irá interpretar &
especial. Seleccione em "view source" no seu navegador, e você verá a saída crua. Se você precisa que ele apareça em um contexto html, você terá que passar a corda através htmlspecialchars
antes de imprimi-lo. Assim:
$rs['pw'] = "Help|Good";
echo htmlspecialchars("&words=".$rs['pw']."&");
Esse código funciona para mim
$rs['pw'] = "Help|Good";
echo "&words=".$rs['pw']."&";
saída
& palavras = Ajuda | Good &
O que me leva a uma pergunta: Qual é o contexto? Onde está essa saída de código, você está executando-o em um servidor web e visualizar em um navegador? Não há outro código envolvido que pode estar causando isso?
Se o contexto é algo como a saída em HTML, então você precisa se certificar de que ele está no lugar certo. Em HTML e comercial é especial e você deve escapar. Normalmente, isso significa traduzir em &