2012-05-30 10 views
7

In PHP quando si scrive un set una variabile uguale a una stringa avvolta in accenti gravi, viene eseguita come se fosse all'interno di un comando shell_exec(). What does the grave accent symbol (`) (not single quote) represent in PHP?Quali sono le regole di manipolazione delle stringhe quando si utilizzano i backtick (accenti gravi)?

Così, in php si può fare ogni sorta di cose per combinare stringhe con variabili, ecc, cosa posso e non posso fare quando si usa al posto di ` 'o"?

+1

Si può avere più fortuna con il termine "backtick". Il personaggio diventa un accento solo quando è combinato con una lettera. – Charles

+0

@Charles ti ringrazio per il suggerimento – Kristian

risposta

5

In PHP, che personaggio si chiama un operatore backtick

una stringa letterale avvolta in backtick è un token T_ENCAPSED_AND_WHITESPACE è possibile confermare questa eseguendo qualcosa di simile:..

print_r(token_get_all('<?php `uname`;')); 

che ti dà questo:

0.123.
Array 
(
    [0] => Array 
     (
      [0] => 367 
      [1] => <?php 
      [2] => 1 
     ) 

    [1] => ` 
    [2] => Array 
     (
      [0] => 313 
      [1] => uname 
      [2] => 1 
     ) 

    [3] => ` 
    [4] => ; 
) 

E quindi eseguire token_name(313) che fornisce T_ENCAPSED_AND_WHITESPACE.

Per il parser, una stringa racchiusa tra apici inversi è equivalente acome "hello $world". La parte letterale/costante della stringa (la parte hello) è T_ENCAPSED_AND_WHITESPACE.

Quindi, per rispondere alla tua domanda, qualsiasi cosa tu possa fare su una stringa che contiene variabili che puoi fare su una stringa avvolta in apici inversi.

Quindi perché T_ENCAPSED_AND_WHITESPACE? Probabilmente, perché come una stringa contenente variabili, il suo valore è determinato in fase di esecuzione. Mentre uno T_CONSTANT_ENCAPSED_STRING (una normale stringa letterale) è un po 'come una costante negli occhi del parser.

Problemi correlati