Newsgroup: it.comp.www.php
Titolo: Mi aiutate con questo apostrofo :-(((

Sto diventando matto con un apostrofo.
Devo correggere qualche riga di programma. A forza di tentativi ho 
individuato da dove ha origine il problema che riscrivo in maniera 
semplificata:
ovviamente le variabili $scritta, $sito_associato e $targhetta sono 
dinamiche e vengono prelevate dal db. Io qui le ho trascritte come se i 
valori fossero assegnati da me. Tanto per fare le cose piu' facili 
altrimenti mi confondo che e' una bellezza.
<?
$scritta="cliccaqui";
$sito_associato="
www.google.it
";
$targhetta="castel sant'angelo";
$sito="<a href=http://$sito_associato target=_new title='".$targhetta."'>";
$chiusura="</a>";
echo $sito.$scritta.$chiusura;
?>
Allora se assegno alla variabile $targhetta un valore con un apostrofo 
dentro mi si scombina l'output che diventa
<a href=
http://www.google.it
 target=_new title='castel 
sant'angelo'>cliccaqui</a>
La targhetta che compare e' castel sant invece che castel sant'angelo 
dal momento che viene mal interpretato l'apostrofo.
Come posso ovviare.
Grazie

 title='".$targhetta."'>";
Abbastanza banale:
$sito = '<a href="http://' .$sito_associato. ' target="_new" title="' .
$targhetta. '">';
In generale:
- HTML richiede che tutti gli attributi abbiano le virgolette, 
preferibilmente doppie, ma va bene anche singole
- PHP puo` usare le singole o le doppie. Con le doppie espande le 
variabili all'interno, con le singole no. Io cerco di usare sempre le 
singole per evitare errori subdoli.
 
- In PHP puoi usare \ per fare l'escape delle virgolette: echo "ciao 
\"mondo\"";
Bye.

 \"mondo\"";
aggiungo:
le "variabili dinamiche" non sono quelle valorizzate tramite il result 
set di una query.


C'e' qualcosa che non mi quadra proprio.
L'escaping piu' o meno lo conosco e avevo gia' fatto delle prove
infatti se pongo
--------------------
$targhetta="castel sant\'angelo";
$scritta="cliccaqui";
$sito_associato="
www.google.it
";
--------------------
dalle righe php
--------------------
$sito="<a href=http://$sito_associato target=_new title='".$targhetta."'>";
$chiusura="</a>";
echo $sito.$scritta.$chiusura;
--------------------
avro' come output il seguente codice html
--------------------
<a href=
http://www.google.it
 target=_new title='castel 
sant\'angelo'>cliccaqui</a>
--------------------
ovvero
castel sant\
invece di castel sant'angelo
Mi puoi aiutare?
Grazie


Perdonami.... non mi ero accorto che trattavasi di correzione, credevo 
fosse solo una spiegazione.
Tuttavia il link non e' cliccabile.
Lo si puo' rendere cliccabile?

 $targhetta="castel sant\'angelo";
Perche` fai l'escape? Non ne hai bisogno. Lo devi fare solo quando usi lo 
stesso tipo di virgolette.
Per rispondere all'altra domanda (oltre a, di nuovo, RTFM): manca un ":
...associato. '" target="...
Non per niente prefesisco la sintassi
<a href="<?php echo $sito_associato; ?>" target="_new" title="<?php echo 
$targhetta; ?>"><?php echo $scritta; ?></a>
O abbreviando "<?php echo" con "<?=" (modificando di conseguenza il 
php.ini).
Ma prima rileggiti bene il manuale. :)
Bye.


wow ora funziona.... sono commosso... grazie davvero.
Per il manuale pagherei oro (si fa per dire) ad avere una buona guida 
sulle stringhe, gli apostrofi e un po' di esempietti.
Mi sono comprato un malloppo di manuale alto quasi 3 dita e mi liquida 
l'argomento con due paginette anche se per il resto mi sembra ottimo :-(
Se hai qualche guida sottomano da consigliarmi sono tutt'orecchi..  :-))))

 :-))))
http://www.php.net/manual/en/
E` uno dei migliori, e` gratis e in piu` ha anche i commenti dei lettori 
che spesso sono una miniera d'oro. Unico difetto: e` in inglese (la 
traduzione italiana e` stata rimossa perche` rimasta troppo indietro).
Bye.