Hallo allemaal,

raar probleem of misschien domme fout van mij:

In volgende code is er geen probleem met de weergave van $agent hier geeft hij mooi weer Yannick in de output weer:


<?php
$body .='
<td colspan=2><div align=center>
<h2>VLM OCC<br />
HOTAC request -- $agent -- $hotaccode</strong><br />
</p>
</div></td>';
?>

echter in onderstaande geeft hij gewoon $agent weer in de output:
<?php
$body .='
<p>Dear $agent<br>
<br>
You will be responsible for the following charter with contract nr $contractnr<br><br>
Ilse Adams will send you the HOTAC confirmation and proof of payment.
<br>';
?>

Waar kan het verschil zitten?

Groeten,
Yannick
<?php
$body .='
<p>Dear {$agent}<br>
<br>
You will be responsible for the following charter with contract nr $contractnr<br><br>
Ilse Adams will send you the HOTAC confirmation and proof of payment.
<br>';
?>

of

<?php
$body .='
<p>Dear '.$agent.'<br>
<br>
You will be responsible for the following charter with contract nr $contractnr<br><br>
Ilse Adams will send you the HOTAC confirmation and proof of payment.
<br>';
?>
Je eerste code bevat een bug van jouzelf of van PHP, met single quotes mag PHP de variabele niet vervangen. Met double quotes wel.
3x Hetzelfde gepost?

Maar haal je variabelen buiten de quotes zoals in je laatste voorbeeld ('<p>Dear '.$agent.'<br>';) Of gebruik dubbele quotes.
... of druk statische HTML simpelweg niet via PHP af en/of stop deze niet (op deze manier) in een string ...

Als je grote lappen HTML/output wilt opvangen in een PHP-variabele, overweeg dan de gebruikmaking van output buffering, dat maakt je HTML-code/output een stuk leesbaarder en daarmee minder gevoelig voor fouten.
Als je $agent niet (meer) ziet als het afgedrukt wordt, kan dat op verschillende manieren komen.
Er is (later in het script) ergens een eval()....
Later is er iets als een str_replace('$agent', $agent);

Dat laatste is niet heel ongebruikelijk: je gebruikt '$agent' dan eigenlijk als placeholder in een string waar je later iets anders wilt gebruiken. Niet geheel onlogisch, maar voor de duidelijkheid kan je het dan beter niet $agent noemen, maar iets als %agent% is dan gebruikerlijker.

Reageren