2010-08-31 7 views
0

.quelle est la signification de cette déclaration dans PHP

$row['NO'] = '<a href="javascript:void(0)"  onClick="openmywindow(\''.$row['bcd'].'\',\''.$row['gfh'].'\',\''.$row['test2'].'\',\''.$_REQUEST['test1'].'\')">'.$row['abc'].'</a>' 

Dans la déclaration ci-dessus, quel est le sens d'échapper aux valeurs de cette manière, comme « \ ». Comment puis-je apprendre cela? Dans la déclaration ci-dessus je veux remplacer la variable PHP $row['TEST2'] avec une valeur statique 'OUVRIR', mais j'obtiens une erreur de syntaxe.

Répondre

2
$row['NO'] = '<a href="javascript:void(0)" onClick="openmywindow(\''.$row['bcd'].'\',\''.$row['gfh'].'\',\'OPEN\',\''.$_REQUEST['test1'].'\')">'.$row['abc'].'</a>'; 

Parce que l'échappement est très confus, il pourrait être préférable d'utiliser heredoc:

$row['NO'] =<<<EOC; 
<a href="javascript:void(0)" onClick="openmywindow('$row[bcd]','$row[gfh]','OPEN','$_REQUEST[test1].')">$row[abc]</a> 
EOC; 

En savoir plus sur les chaînes in the manual (y compris échapper et heredoc).

PS: Ne pas utiliser $_REQUEST. Au lieu d'utiliser $_GET ou $_POST

1

Dans la déclaration ci-dessus ce qui est le sens d'échapper aux valeurs que. Suchas « \ » de manière Comment pouvons-nous apprendre ce

Jetez un oeil à ce tutoriel :)

PHP and Escaping

Pour l'erreur, assurez-vous que vous avez correctement échappé les chaînes.

0

C'est ce que je vous suggère de faire au lieu d'échapper à + cordes concaténer (celui qui convient ici.):

$html = "<a href=\"javascript:void(0);\" onclick=\"openmywindow('%s','%s','%s',%s');\">%s</a>"; 
$row['NO'] = sprintf($html, 
    $row['bcd'], 
    $row['gfh'], 
    $row['test2'], 
    $_REQUEST['test1'], 
    $row['abc'] 
); 

Et puis remplacez tout ce que vous devez remplacer. .. Lisez le manuel sur sprintf pour plus de détails.

De même, si un argument après $html contient ' caractères, vous devez appeler addslashes sur ces arguments.

** MISE A JOUR **

A propos $_REQUEST, lisez here pourquoi il est recommandé de ne pas l'utiliser.

+0

Vous oubliez d'échapper les guillemets, corrigé cela pour vous;) – NikiC

+0

@nikic, merci. –

Questions connexes