Stampare '<?' in php

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?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
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;?";
 

PHP

Utente Attivo
9 Mag 2013
105
0
16
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:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Io eviterei di mettere caratteri speciali o spazi nel nome delle pagine php.
L'apice singolo in particolare è difficile da gestire in qualsiasi linguaggio.
 

PHP

Utente Attivo
9 Mag 2013
105
0
16
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.
 

PHP

Utente Attivo
9 Mag 2013
105
0
16
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...
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
come hai tolto gli spazi puoi togliere anche gli apici
PHP:
$link = str_replace("'","",$link);
ti semplifichi la vita. credi
 

PHP

Utente Attivo
9 Mag 2013
105
0
16
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!