2009-12-07 9 views
1

Je suis imprimer une chaîne comme ci-dessousPerluète à la fin de chaîne non visible dans le navigateur

code:

echo "&words=".$rs['pw']."&"; 

Sortie:

& mots = Aide | Bon

Notez que le dernier & n'est pas imprimé.

Mais quand j'ajoute un espace après & il est imprimé comme ci-dessous

code:

echo "&words=".$rs['pw']."& "; 

Sortie:

& mots = Aide | Bon &

Maintenant, & est imprimé. Pourquoi cela se produit-il et quelle est la raison de ce comportement?

+0

Fonctionne bien pour moi. Ne semble pas voir s'il y a un problème. – mauris

+0

Je ne peux pas penser à ce qui le provoquerait tout de suite, mais ne l'imprime-t-il toujours pas si vous utilisez des guillemets simples au lieu de guillemets doubles pour l'esperluette? – jeffff

+0

incapable de reproduire le bogue. fermé. – Amarghosh

Répondre

4

Si vous êtes sortie à un navigateur Web, vous devez être Echapper à la & en utilisant &amp; « & » en HTML est beaucoup utilisé pour échapper à des chaînes, et est de dans l'URL donc un caractère spécial, comme <> etc.

1

Ce code fonctionne pour moi

$rs['pw'] = "Help|Good"; 
echo "&words=".$rs['pw']."&"; 

Sortie

& mots = Aide | Bon &

Ce qui me conduit à une question: Quel est le contexte? Où est cette sortie de code, l'exécutez-vous sur un serveur Web et affichez-vous dans un navigateur? N'y a-t-il aucun autre code impliqué qui peut causer cela?

Si le contexte est quelque chose comme sortir en HTML, vous devez vous assurer qu'il est au bon endroit. En HTML esperluette est spéciale et vous devriez y échapper. Habituellement, cela signifie traduire en &amp;

+0

Oui, je l'exécute sur le serveur Web et le visionnons dans le navigateur et aucun autre code inclus là-bas, je viens de voir cela, j'ai donc supprimé tout le code et ensuite testé, toujours le même problème. – Prashant

+0

Ok, je l'ai testé sur mon serveur web et ça marche toujours. Avez-vous testé le code exact que j'ai donné ou avez-vous _any_ autre code du tout dans votre fichier? Comme lire de la base de données ou quoi que ce soit? –

1

Si vous êtes sortie dans une page Web, le navigateur interprétera & spécial. Sélectionnez "Afficher la source" dans votre navigateur, et vous verrez la sortie brute. Si vous avez besoin qu'il apparaisse dans un contexte html, vous devrez passer la chaîne par htmlspecialchars avant de l'imprimer. Alors:

$rs['pw'] = "Help|Good"; 
echo htmlspecialchars("&words=".$rs['pw']."&");