Stampare '<?' in php

  • Creatore Discussione Creatore Discussione PHP
  • Data di inizio Data di inizio

PHP

Utente Attivo
9 Mag 2013
105
0
16
Il problema che mi si è manifestato è uin pò strano, comunque vi faccio un esempio di codice:
PHP:
echo '<?';
Questo codice non stampa niente, tuttavia nel database viene memorizzata correttamente la frase '<?', se ad esmepio aggiungiamo dati con una form. La mia domanda è: come posso fare per stampare correttamente questo pezzetto?
 
La parentesi angolare viene interpretata dai browser come l'apertura di un nuovo tag e non trovando la sua chiusura non ti stampa niente. Devi usare la sua entità
PHP:
echo "&lt;?";
 
Grazie per la risposta e la spiegazione, in effetti questa è la soluzione, ma visto che mi trovo faccio un'altra domanda, che riguarda propio l'encoding dei caratteri.
Ho problemi con i link: il link è questo: prova'ee.php, posso mettere tutte le codifiche che voglio: %27, &apos;, ecc.
Il link è perfettamente funzionante, ma se seleziono la barra degli indirizzi, seleziono il link, e poi premo invio per fare un refresh il browser va cercarmi il link su un motore di ricerca. Se invece ci arrivo da un qualsiasi ciollegamento, interno o esterno, oppure faccio un semplice aggiorna pagina funziona tutto perfettamente.
Per quale motivo se immetto l'indirizzo manualmente finisco per esempio su google?
 
Ultima modifica di un moderatore:
Io eviterei di mettere caratteri speciali o spazi nel nome delle pagine php.
L'apice singolo in particolare è difficile da gestire in qualsiasi linguaggio.
 
Grazie del consiglio, ma non lo posso accettare, in quanto alcuni nomi contengono un apostrofo e non posso cambiar e questa cosa: così è...
Per quanto riguarda spazi non ne uso, perchè ho fatto il modo che il link se deve andare ad una pagina 'prova prova', in realtà appaia come 'prova_prova', quindi il problema è solo se si seleziona l'indirizzo e si preme invio, perchè il browser manda a google.
Ho scoperto un'altra cosa insolita: se da una qualsiasi pagina scrivo l'indirizzo e premo invio, annche se sono su googel o simili la pagina viene caricata correttamente, il problema si verifica solo quando la stesa è già caricata.
 
Ho appena capito perchè accade: nei link gli apici li scrivo come %27, ma quando la pagina e caricata diventano semplicemente apostrofi, di conseguenza quando ripremo invio il browser vede un semplice apostrofo e non la sua codifica, ed è per questo che sbaglia.
Infatti se aggiungiamo l'indirizzo ai preferiti, anche se vediamo l'apostrofo viene salvato come %27, l'errore lo commette solo se ricarichiamo la pagina selezionando la barra degli indirizzi, perchè si vede un %27 convertito in apostrofo, che non si riconverte in %27, quindi il nuovo indirizzo che immettiamo contiene l'apice normale e non la sua modifica.
Ho provato la pagina su altri browser e ho notato che solo mozzilla trasforma nell'indirizzo l'apice da %27 in " ' ", quindi mi chiedo perchè mozzilla sbaglia, e se i browser più vecchi poterbbero commettere lo stesso sbaglio...
 
come hai tolto gli spazi puoi togliere anche gli apici
PHP:
$link = str_replace("'","",$link);
ti semplifichi la vita. credi
 
Fatto, comunque non era propio così la soluzione, ma ho notato che avviando un protocollo https il browser si comporta nella maniera che voglio io anche su mozzilla. Ciao!
 

Discussioni simili