• ベストアンサー

【PHP】「\"」が面倒くさいのですがいい方法ありませんか?

Perlを勉強したあと、現在PHPを勉強しています。PHPはまだ数日なのでかなり素人です。 例えば、 HTMLの <meta name="Description"… を代入したい場合、 $data = "<meta name=\"Description\"… とするわけですが、「\」があると見にくいので省略できる方法はありませんでしょうか? $data = "<meta name='Description'… という具合に「"」を「'」に置き換えて記述すればいいような気もするのですが、HTML及びCSSで何から何まで「'」に置き換えて問題ないのか不安です。 お詳しい方よろしくお願いいたします。

  • PHP
  • 回答数3
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

シングルクオートで囲めば、とりあえずダブルクオートのエスケープは必要ありません。 $data = '<meta name="Description"… ですが、代入する文字列中にシングルクオートがある場合には当然\でエスケープしなければならないので、例えばこういう場合はエスケープしないと駄目です。 $data = '<a href="#" onclick="window.open(\'foo.html\',\'new_win\')">… ただし、シングルクオートでは「\n」などの特殊文字を展開しない(「\n」とそのまま表示してしまう)のでそのような場合はダブルクオートで囲まないと駄目です。 また、ヒアドキュメントを使えばシングルクオートもダブルクオートも関係なく書けますが、これはある程度長い文字列でないと使いにくいです。 $data=<<<_EOT_ <html> <head> <title>テストページ</title> <meta name="Description" content="……" /> </head> <body> ~~~(中略)~~~ <a href="#" onclick="window.open('foo.html','new_win')">……</a> ~~~(中略)~~~ </body> </html> _EOT_; PHPに限らず、たいていの言語は文字列に関して同様のエスケープをしないとうまくいかないので、「そういうものだ」と諦めるのが一番かも知れません。

参考URL:
http://www.php.net/manual/ja/language.types.string.php
takosuke88
質問者

お礼

詳細にご説明いただきありがとうございます。 割り切って進むことにいたします。

その他の回答 (2)

  • 0x131cc6e
  • ベストアンサー率36% (42/115)
回答No.3

私もエスケープするのがキライな質です。 だからタグの中のクォーテーションはシングルを使って  $data = "<input type='text' name='txvalue'>" ; などと書いています。 シングルクォーテーションを使うことに不安を持たれているようですが、まったく問題ありません。 ちなみにシングルとダブルが逆転する以下のような記述も可能です。  $data = '<input type="text" name="txvalue">' ; ただし、この場合文字列中に変数を埋め込んでも展開してくれないので、私は専ら最初の書き方で通しています。 また、例えば#2さんが書かれているようなOnClickの記述の場合も、中身を一旦変数に入れてしまえばスッキリと書く事ができ、しかも内容を把握しやすく、かつ変更も容易になるのでオススメです。  $strEvent = "window.open('foo.html','new_win')" ;  $data = "<a href='#' OnClick='$strEvent'>" ; しかしこういう方法もやりすぎるとイビツなソースになってしまうので、ある程度のあきらめは必要です。

takosuke88
質問者

お礼

そうですか!シングルで問題ないですか。 それなら全部シングルで書きましょう。 ありがとうございました。

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

ヒアテキストを使用すればいいのではないでしょうか print <<<EOF <meta name="Description"… EOF;

takosuke88
質問者

お礼

そうですか~ これがベストなんですかね… ありがとうございました。

関連するQ&A

  • フレームでWebサイトを製作する場合のメタタグの記入方法について

    こんにちは。今さら周りの人には聞けない事を質問します。 <frameset cols="200,*"...>のように、左はメニュー、 右はコンテンツ内容といった一般的なフレームの場合、  meta name="robots"  meta name="description"  meta name="keywords" などは、フレーム側HTML(index.htm)に記述するのか、 コンテンツ側のトップHTML画面に記述するのか、 それとも、全てのHTMLに記述するのか、どれが正解なのでしょうか? 教えて下さい。お願いします。

    • ベストアンサー
    • HTML
  • 自CGIのURLの一部を取得する方法

    http://xxx.jp/xxx/xxxxxxx/xxxxxx.cgi?cmd=s&xxxx&xxx&Tfile=Data&TrColor=%xxx&Sort=xxx_xxxx&page=1 上記のようなURLがブラウザに表示されていて、末尾に「page=1」という文字がある時だけ HTMLのMETAタグのDESCRIPTIONに page=1 を挿入したいです。 ちなみに、そのページには、以下のように DESCRIPTIONが記載されており、下記の★の部分に 「page=1」というURLの一部の文字を挿入したいと考えています。 <META name="description" content="説明文 ★"> Perl でどのように記述すれば宜しいでしょうか? どうかアドバイスをお願い致します。 m(_ _)m

    • ベストアンサー
    • Perl
  • php?でスマホ用のCSSへ切り替える記述について

    php?でスマートフォン用のCSSへ切り替える記述について質問です。 HTML/CSSの知識はあるのですがPHPについてはさっぱりで… お力を頂ければと思います。 今度CSSの切り替えでスマートフォン用のサイトを表示することになったのですが、 一部システムが絡んでいるため切り替え方が分かりません。 拡張子は.ctpです。 HTML/CSSで下記の記述にしています。 <link rel="stylesheet" type="text/css" href="../_common/css/import.css" media="all and (min-width : 706px),print" /> <link rel="stylesheet" type="text/css" href="../_common/css/_phone/import.css" media="only screen and (max-width : 705px)" /> PHP?でCSSを読み込む部分は <?php echo $this->Html->meta('icon'); echo $this->Html->css('/_common/css/import.css'); echo $scripts_for_layout; ?> と記述されています。 上記にどういった記述を加えればHTML/CSSのような切り替えが可能でしょうか? もしくは、全く別の部分をいじらなければならないのでしょうか? よろしくお願い致します。

    • ベストアンサー
    • PHP
  • PHP→JavaScriptへの書き換え

    以下のような、フレームページのスタイルシートを変更するプログラムをPHPで書いたのですが、複数ある設置先サーバーの1つがPHP・CGIなどに対応していないため、JavaScriptに書き換える必要が出てきました。 そこでお聞きしたいのですが、以下のプログラムをJavaScriptに書き換えるにはどう記述すればいいでしょうか? JavaScriptは本のサンプルを見ながらいじった程度なので、記述にいまいち自信がありません・・・。 【index.html】フレーム定義ページ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <meta http-equiv="Content-Style-Type" content="text/css"> <script type="text/javascript"> <!-- if( self != top ) { top.location = self.location; } //--> </script> <title>CSSチェンジャー</title> </head> <frameset rows="40,*"> <frame name="top" src="top.php" scrolling="NO"> <frameset cols="17%,*"> <frame name="left" src="menu.php"> <frame name="right" src="main.php"> </frameset> <noframes> <body> <p>このページを表示するには、フレームをサポートしているブラウザが必要です。</p> </body> </noframes> </frameset> </html> 【main.php】中央フレームページ <?php error_reporting(~E_NOTICE); if($_COOKIE["css"]==""){ $css="<link rel=\"stylesheet\" type=\"text/css\" href=\"aqua.css\">"; }else{ $css.="<link rel=\"stylesheet\" type=\"text/css\" href=\""; $css.=$_COOKIE["css"]; $css.=".css\">"; } echo <<<HTML <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <meta http-equiv="Content-Style-Type" content="text/css"> $css <title></title> </head> <body> <h3>CSSチェンジャー</h3> <p>下から選んでください。</p> <form action="" method="post"> スタイル: <select name="cssselect"> <option value="blue" selected>ブルー系</option> <option value="red">レッド系</option> <option value="yellow">イエロー系</option> </select> <input type="submit" name="sub" value="変更"> </form> </body> </html> HTML; if(isset($_POST['sub'])){ $timeout = time() + 30 * 86400; setcookie("css",$_POST['cssselect'],$timeout,'/~********/','www.*****.ne.jp'); header("location:index.html"); exit(); } ?> 【menu.php】【top.php】左フレーム/上フレームページ <?php error_reporting(~E_NOTICE); if(!isset($_COOKIE["css"])){ $css="<link rel=\"stylesheet\" type=\"text/css\" href=\"aqua.css\">"; }else{ $css.="<link rel=\"stylesheet\" type=\"text/css\" href=\""; $css.=$_COOKIE["css"]; $css.=".css\">"; } echo <<<HTML <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <meta http-equiv="Content-Style-Type" content="text/css"> $css <title></title> </head> <body> <p>フレームページ</p> </body> </html> HTML; ?> indexはすでにJavaScriptで書いてあるので大丈夫だと思いますが・・・。

    • 締切済み
    • PHP
  • インターネットで検索できるようにするためのタグの記述について、何点かお伺いします。

    インターネットで検索できるようにするためのタグの記述について、何点かお伺いします。 1.<meta name="robots" content="index,follow"> というのは記述した方が良いですか?あるのとないのでは大差はありますか? 2.<meta name="description" content="・・・・・"> キーワードは多ければ多いほど良いのでしょうか?記述するのに注意点はありますか? 某サイトに、「HEADエレメント内のMETAタグのキーワードの記述は、1行で記述されていないと、ロボット型サーチエンジン誤動作の原因になります。」 となっていました。そうなんでしょうか? 3.キーワード等の記述はトップページだけでなく、各ページに記述した方が良いのでしょうか? 例 下記のものを全ページに記述 <title>・・・</title> <meta name="author" content="・・・"> <meta name="description" content="・・・"> <meta name="keywords" ・・・"> <meta name="robots" content="index,follow"> 4.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> このような記述があったのですが、!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" のあとに、アドレスがあるのってどうゆう意味でしょう? ご存知の方、よろしくお願いします。

    • ベストアンサー
    • HTML
  • googleではMETAは無視されますか?

    HTMLの勉強をしている初心者です。googleに登録されたサイトで面白い現象を見つけましたので、ご意見をいただければと思います。 googleの場合、 <meta name="keywords" content=" <meta name="description" content=" の記述をしても全て無視され、ページ内の文言に対してキーワードが設定されるようなんです。ということは、ヒットされるようになるためには、METAタグで記述した内容を本文内に入れ込むしかないということになるんですが、実際にはMETAは単語の羅列でそういうのは難しいと思います。descriptionは文章ですが、これについては同様の内容をページ内に入れ込むことでヒットするようになると思いますが。例えばですが、見えない文字にしてMETAを入れるなどできないでしょうか。googleに効率的に登録されるためのノウハウサイトなどありましたら教えていただきたいのですが。 よろしくお願いいたします。

  • <title></title>はどこに書くべき?

    <title></title>をどこに書くべきなのか分からず悩んでいます。 今までこの<title></title>を、以下の位置に書いていました。 <head> <meta http-equiv= "Content-Type" content= "text/html; charset=Shift_JIS" /> <title></title> <meta name= "keywords"・(省略)・・・・ /> <meta name= "description" ・・・(省略) /> <link rel="stylesheet" href=***.css"type="text/css" /> </head> このようにです。 ところが上記の他に<title></title>の位置が、以下のように書かれた物も見つけました。その為、一体どこに<title></title>を書くのが正しく、またSEOに有効なのか分からなくなってしまいました。 <head> <meta http-equiv= "Content-Type" content= "text/html; charset=Shift_JIS" /> <meta name= "keywords"・(省略)・・・・ /> <meta name= "description" ・・・(省略) /> <title></title> <link rel="stylesheet" href=***.css"type="text/css" /> </head> また、Google ニュース 日本版のソースを調べると、<title></title>が<head>の直下に書かれてあり、更に混乱しています。 一体どれが正しいのでしょうか。よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • 検索エンジンについて

    9月の終わりにgoogle検索に登録したのですが 今日検索をかけても自分のHPがひっかからなくて困っています <HTML><HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META http-equiv="Content-Style-Type" content="text/css"> <Meta Name="description" Content="こちらに説明"> <Meta Name="keywords" Content="こちらに,検索,タグを入れてます"> <Meta Name="ROBOTS" Content="INDEX"> <TITLE>HPタイトル</TITLE> <style type=text/css> </HEAD><BODY BGCOLOR="#ffffff"> こちらに内容 </BODY></HTML> このように記述しています なぜ検索にひっかからないのかどうしてもわかりません 原因がわかる方がいらっしゃいましたら教えてください

    • ベストアンサー
    • HTML
  • phpでcssの記述をデータベースに登録したい

    お世話になります php phpで動的にHTMLを生成したくてプログラミング中なのですが、エスケープ処理でつまづいてしまいました フォームのtextareaにcssコードを記述して送信したのですが、phpが止まってしまいます ◉フォーム <textarea name="css"></textarea> ◉入力した内容 /*メモを記述*/ #test {color:#F00;} 上記のような記述をフォームから送信してphpで受け取るにはどうしたら良いのでしょうか? エスケープシーケンスの理解不足だとは思うのですが、ご教授のほどよろしくお願いいたします

    • ベストアンサー
    • PHP
  • PHPからHTMLへの変数の受け渡し

    form.html→page1.php→page2.php というようなページをつくり、form.htmlでテキストエリア等<form>を使いpage1.phpにデータ:nameを送るとします。 その際$name = $_POST['name'];とするとphpでの変数になってしまってpage1のhtml上では認識されませんよね? page1からpage2に移動するときにform.phpでいれたnameのデータも <input type="hidden" name="名前" value="name"> というように使いたいのですがその際page1内でphpでの$nameをhtmlのnameに代入というかデータの受け渡しが必要になるかと思うのですがそれはどのように記述すればいいのでしょうか? ご教授よろしくお願いいたします。

    • ベストアンサー
    • PHP

専門家に質問してみよう