OVH Cloud OVH Cloud

Echo avec ou sans parentheses ?

8 réponses
Avatar
Iulius
Bonjour,

Normalement, la primitive << echo >> (qui n'est pas à proprement parler
une fonction) ne nécessite pas l'emploi de parenthèses.

Je l'ai d'ailleurs toujours employée sans parenthèses, sans aucun
problème.

Mais j'ai une commande qui ne passe pas :

echo "<a href=\"http://www.site.com/$page_base/".$ref[0].".htm\"></a>\n";


J'obtiens l'erreur :

Parse error: parse error, unexpected '\"' in /index.php on line 116


C'est le premier << \" >> qui semble poser problème.

Alors que :

echo ("<a href=\"http://www.site.com/$page_base/".$ref[0].".htm\"></a>\n");

marche nickel.


Savez-vous ce qu'il se passe ?

D'avance merci.

Iulius

8 réponses

Avatar
Antoun
Mais j'ai une commande qui ne passe pas :

echo "<a href="http://www.site.com/$page_base/".$ref[0].".htm"></a>n";


chez moi, cela passe sans problème. Tu devrais d'ailleurs mettre qqch
entre <A> et </A>, l'affichage serait grandement amélioré ;-)

Ceci dit, simplifie-toi la vie :

echo "<a href='http://www.site.com/$page_base/$ref[0].htm'></a>n" ;

Avatar
Steuf
Bonjour,



Bonjour

Normalement, la primitive << echo >> (qui n'est pas à proprement parler
une fonction) ne nécessite pas l'emploi de parenthèses.


Effectivement


Je l'ai d'ailleurs toujours employée sans parenthèses, sans aucun
problème.

Mais j'ai une commande qui ne passe pas :

echo "<a href="http://www.site.com/$page_base/".$ref[0].".htm"></a>n";


J'obtiens l'erreur :

Parse error: parse error, unexpected '"' in /index.php on line 116


Bizarre la synthaxe est bonne, et en l'utilisant votre code sur mon
serveur local je n'ai eu aucune erreur.
Il y a peu être autre chose avec cette ligne qui génére cette erreur (
Une erreur de synthaxe ).

C'est le premier << " >> qui semble poser problème.

Alors que :

echo ("<a href="http://www.site.com/$page_base/".$ref[0].".htm"></a>n");

marche nickel.


Bizarre...



Savez-vous ce qu'il se passe ?


Peu être quelque chose avant cette ligne qui génére cette erreur, bien
souvent les erreurs ne sont pas là ou la parser PHP nous l'indique, mais
juste avant. A vérifier que le reste de votre code est exact juste avant
cette ligne.

Sinon je ne sais pas, car votre ligne est parfaitement correcte.


D'avance merci.

Iulius



--
Mon nouveau bébé : http://exinsidephp.free.fr

Avatar
bruno modulix
Iulius wrote:
Bonjour,

Normalement, la primitive << echo >> (qui n'est pas à proprement parler
une fonction)


Non, c'est une instruction.

ne nécessite pas l'emploi de parenthèses.


En effet

(snip)

Mais j'ai une commande qui ne passe pas :

echo "<a href="http://www.site.com/$page_base/".$ref[0].".htm"></a>n";

J'obtiens l'erreur :
Parse error: parse error, unexpected '"' in /index.php on line 116


Le code suivant fonctionne parfaitement chez moi
(avec ou sans retours à la ligne après le echo)

<?php
$ref = Array("toto");
$page_base = "machin";

echo "<a href="http://www.site.com/$page_base/"
. $ref[0]
. ".htm">aaa</a>n";
?>

C'est bien un copié/collé du code problématique que tu a posté ?

(snip)

Alors que :
echo ("<a href="http://www.site.com/$page_base/".$ref[0].".htm"></a>n");
marche nickel.

Savez-vous ce qu'il se passe ?


Aucune idée.

--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in ''.split('@')])"

Avatar
Steuf
Mais j'ai une commande qui ne passe pas :

echo "<a href="http://www.site.com/$page_base/".$ref[0].".htm"></a>n";



chez moi, cela passe sans problème. Tu devrais d'ailleurs mettre qqch
entre <A> et </A>, l'affichage serait grandement amélioré ;-)

Ceci dit, simplifie-toi la vie :

echo "<a href='http://www.site.com/$page_base/$ref[0].htm'></a>n" ;


Bravo les gars on a été parfaitement synchrone 11H12 pour els trois
réponses :-).

Pour Bruno j'ai fait exactement le même test... Et aucun problème.

Pour Autoun : J'arriverais jamais à m'y faire à cette synthaxe HTML avec
les simple quote... Je suis fidéle à mes doubles quotes pour ce qui est
du HTML :-).

--
Mon nouveau bébé : http://exinsidephp.free.fr


Avatar
Iulius
En réponse à Steuf :

Bizarre la synthaxe est bonne, et en l'utilisant votre code sur mon
serveur local je n'ai eu aucune erreur.
Il y a peut-être autre chose avec cette ligne qui génére cette erreur.


Je viens d'essayer à nouveau sans les parenthèses et... ça marche !
J'ai néanmoins apporté pas mal de modifications au code de la page
depuis ce matin, donc peut-être qu'il y avait une erreur avant.
En tout cas, cela fonctionne désormais très bien ; je suis désolé
d'avoir importuné le forum pour cela.

Merci beaucoup en tout cas pour vos réponses.


Au passage, est-ce qu'il vaut mieux/est conseillé/est indifférent
d'écrire (indépendamment de la lisibilité du code -- je parle
juste en terme d'efficacité) :

$var = "$test $tab[0]";
$var = $test." ".$tab[0];
$var = "{$test} {$tab[0]}";

Et :

$var = "Chaîne sans variables";
$var = 'Chaîne sans variables';


Je pencherais plutôt pour les deux dernières à chaque fois.
Qu'en pensez-vous ?

Cordialement,

Iulius

Avatar
Marc Quinton
Steuf wrote:

Bravo les gars on a été parfaitement synchrone 11H12 pour els trois
réponses :-).


je penche plus pour l'heure de la moderation que l'heure du post.

Avatar
ZeGilooo
"Iulius" a écrit dans le message de
news:
[...]
lors d'un echo $var;

$var = "Chaîne sans variables"; => Php parse la chaine à la recherche de
variable
$var = 'Chaîne sans variables'; => Php affiche directement la chaine
(sensiblement plus rapide...)

$var = "$test $tab[0]"; => un classique qui fait partie de ce qu'on
aime dans php...
$var = $test." ".$tab[0]; => il est plus utile d'écrire $test.'
'.$tab[0]; pour éviter le parsing inutile
$var = "{$test} {$tab[0]}"; => c'est la syntaxe complexe qui a été
introduite en PHP 4, provoque à mon avis encore plus de parsing (???)

Perso, et dans le cas improbable où je serai perfectionniste, j'utiliserai
$var = 'Chaîne sans variables'; et $test.' '.$tab[0];

Gilles.
Avatar
Steuf
Steuf wrote:

Bravo les gars on a été parfaitement synchrone 11H12 pour els trois
réponses :-).



je penche plus pour l'heure de la moderation que l'heure du post.


Oui j'ai vu après que ce forum était modéré, m'en souviens jamais :-)

--
Mon nouveau bébé : http://exinsidephp.free.fr