2012-02-21 15 views
-1

PHP変数の中にhtml変数を入れていますが、正しくエスケープされていないので問題があります。誰が助けてくれますか?ここにそれはコードです:PHPの文字列に変数を挿入する

$var['foo'] = "<p>$coord->name</p><p>$coord->address</p><a href=\"<?php echo site_url('info_hospital/$id'); ?>\">Details</a>"; 

どこが問題ですか?

+0

これはどのように行われたのでしょうか。 http://php.net/manual/en/language.operators.string.phpを参照してください。 –

+1

正確には機能しません。そのPHPブロックが文字列で実行されないことをご存知ですか? – alex

+0

はい、このブロックは展開されていません。だから私はそれが正しくエスケープされていないと思う... –

答えて

2

うーん...そこにいくつかのエラーが、これは動作するはずです。このような大規模な文字列を扱うために

<?php 
$var['foo'] = "<p>{$coord->name}</p><p>{$coord->address}</p><a href=\"" . site_url("info_hospital/$id") . "\">Details</a>"; 
+0

残念ながら、うまくいきません... hrefが正しくエスケープされていません –

+0

'site_url()'関数によって返された文字列が正しくエスケープされていないことを意味しますか?もしそうなら、それはまったく異なる問題ですが、おそらく 'urlencode()'で解くべきです。 – powerbuoy

+0

@powerbuoy ...ええ、exctaly ...それは正しくエスケープされていません... –

1
$var['foo'] = "<p>".$coord->name."</p><p>".$coord->address."</p><a href=".site_url($id).">Details</a>"; 

歓声

0

を、私はsprintfを使用して好む:

$var['foo'] = sprintf(
    '<p>%s</p><p>%s</p><a href="%s">Details</a>', 
    $coord->name, 
    $coord->address, 
    site_url($id) 
); 
0

コンカチネーションは、通常、二重引用符に比べて小さなパフォーマンス上の利点があります。また、構文を強調するテキストエディタでは、変数が優れています。

$var['foo'] = '<p>' . $coord->name . '</p><p>' . $coord->address . '</p><a href="' . site_url('info_hospital/$id') . '">Details</a>'; 
関連する問題