質問: ''` googlemapで表示させたいのですが、取得した`$nearest_restaurants[$i]['Restaurant']['en_name']`内にシングルクォーテーションが含まれている為にエラーとなってしまいます。 個別の変数の場合は`¥`等でエスケープできますが、このように複数取得する場合、綺麗にシングルクォーテーションをエスケープする方法はありますか?
回答: この例ではHTMLとしてのエスケープとjavascriptとしてのエスケープの両方をする必要があり、エスケープが中途半端だと簡単に脆弱性が生じます。特にjavascriptのエスケープは汎用的な方法がなく難易度が高いものです。phpに限らず、javascriptの変数を動的に生成するのはリスクが高いのでやめましょう。 (PHPによるjavascriptの変数の生成の時に`json_encode()`を使う方法を提案される方もいますが、安全に利用するには適切なパラメータを指定する必要があり、ただ`json_encode()`を使えばよいというものではありません) この例での代替案としてはPHPで`$nearest_restaurants`のデータを含んだHTMLを生成するのではなく、そのデータをJSON形式で出力するAPIを用意して、javascriptからそのAPIを使用してデータを取得し処理するのがよいのではないでしょうか。 また、webアプリを安全に実装するのは意外に難しいので、信頼できる書籍(「体系的に学ぶ安全なWebアプリケーションの作り方」はおすすめ出来ます)などできちんと勉強されることをお勧めします。