• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHP コードを文字列として出力する方法)

PHPコードを文字列として出力する方法

ky072の回答

  • ベストアンサー
  • ky072
  • ベストアンサー率60% (85/140)
回答No.3

かなり無理矢理ですが、 自分自身のファイルを読むという方法はいかがでしょう。 ─ <?php $a['huga'] = 2; $b['hoge'] = 3; $c = $a['huga'] * $b['hoge']; $str = abc(__LINE__); echo $str . "\n"; function abc($ln){  $file = fopen(__FILE__, 'r');  $str = '';  for($n=1; !feof($file) && $n<$ln; $n++){   $line = trim(fgets($file));   if( 0 < strlen($line) ){ $str = $line; }  }  fclose($file);  return $str; } ?> ─ abc() は自分自身のファイルを読み、 引数で指定した行番号の直前の行を表示します。 呼び出す際、現在の行番号 __LINE__ を使って 目的の行を指示します。 対象のコードが複数行になる場合には、 もう少し複雑な処理が必要になります。

susan-styl
質問者

お礼

ky072様 ご回答ありがとうございます! この、自分自身にアクセスするというのが 僕、個人的に目からウロコです こんなこと出来るんですね!!

関連するQ&A

  • VBAの文字列の中に”(全角のダブルコーテーション)を使う

    VBAのStringの中に”(全角のダブルコーテーション)を使おうとしているのですが、VisualBasicEditorにより自動的に ""(半角のダブルコーテーション2つ)に変換されてしまいます。 Dim str as String str = "abc”def"    ↓ str = "abc""def" 文字列中に全角のダブルコーテーションを使う方法を教えてください。よろしくお願いします。

  • Cでは文字列をどのように認識するのでしょうか?

    C言語には文字列型というものは存在しないと教わりました。 文字列の終わりはヌル文字で認識できますが、 文字列型というものが存在しないのに何故次のバイトを読もうとするのですか? たとえばchar str[] = "abc";、あるいはchar *p = "abc";とあったとして printf(str);あるいはprintf(p); でなぜabcが出力されるのでしょうか?なぜaの次にbがbの次にcがあるとわかるのでしょうか? char型で先頭アドレスが渡された場合、ヌル文字を見つけるまでアドレスをインクリメントし続けるという決まりでもあるのでしょうか? それに文字列型というものが存在しないなら''と""を分ける意味もないのでは??

  • c言語の文字、また文字列について

    c言語の文字、つまり「'(シングルクオーテーション)」で囲んだ単数の半角文字は、メモリに保存されているのでしょうか。 また、アドレスは有るのでしょうか。 c言語の文字列、つまり「"(ダブルクオーテーション)」で囲んだ複数の文字は、メモリに保存されているのでしょうか。 また、アドレスは有るのでしょうか。

  • 変数の中の文字列から””を取り除く方法

    javascriptに関する質問です。 タイトル通りですが、 変数の中の文字列からダブルクォーテーションを取り除く方法はありますか? 以下は私がやりたいことの例です。 var a = "hello", b = "hi"; var greet = "a, b"; var c = greet.split(","); この結果は c = ["a", "b"] こうですが ここからダブルクォーテーションを除去して、 c = [a, b] と変数名にすることは可能ですか? 可能でしたらどのような方法があるでしょうか?

  • fputで出力した文字列を改行するには?

    PHP初心者です。 いくつかの文字列変数をテキストファイルに書き出す処理を行いたいのですが、うまく動作してくれません。 文字列変数 $str_a, $str_b, $str_cをカンマで区切ってテキスト1行でファイルに書き出しています。 $str = $str_a . ',' . $str_b . ',' . $str_c . '\\r\\n'; fputs($fp, $str); 上の2行がループで数回呼ばれた後、ファイルをクローズしているのですが、実際に作成されたテキストファイルを見ると a1,b1,c1\r\na2,b2,c2\r\n....みたいに改行が入らず"\r\n"という文字列があるだけです。希望しているのは a1,b1,c1 <-ここで改行 a2,b2,c2 <-ここも改行 という結果なのですが.... よろしくご教授お願いいたします。

    • ベストアンサー
    • PHP
  • エクセル関数:右側の文字列を抜き出す方法

    エクセル初心者です。 文字列の抜き出す方法で悩んでいます。 たとえば、A1~A5までに下のような 文字列が順に入っているとします。 C:\abc\TEST1.DOC C:\abc\def\TEST2.DOC C:\abc\def\ghi\jkl\TEST3.DOC C:\abc\def\ghi\TEST4.DOC C:\abc\def\TEST5.DOC これらの文字列の一番右側の'\'以降の文字列 (TEST1~5.DOC)を、B1~B5のセルに 出したいと思っているんですが できるのでしょうか? RIGHT関数や、LEN関数、FIND関数を使って できそうな気がするのですが どうも良い方法が思いつきません。 よろしくお願いします。

  • C#でPHPの可変関数のような事ができるでしょうか

    すみません、ご存じの方教えてください。 PHPでは次のような形で文字列で関数を呼び出せるようですが、C#でも同じ事ができますでしょうか? $str = "MyFunc1"; $str("Hellow"); function MyFunc1($abc){ echo "$abc"; }

  • 上手な文字列の分割方法

    こんばんは、早速ですが質問があります。 Rich Textbox Controlで言語設定をして色付けを行いたいのです。 たとえばVisual Basicの色指定にしたときには、キーワードを青色に、コメント行を緑に、といった色付けになります。 Dim I As Long 'カウンタ変数 [Dim][As][Long]を青色に、['カウンタ変数]を緑色にするような感じです。 上記のような単純なものはよいのですが、 MsgBox "C:\Fallin'Love.mp3" という記述があった時に、シングルクォーテーションが読み込まれ['Love.mp3"]の部分が緑色になってしまいます。 今はダブルクォーテーション内かどうかのフラグを使用してInStr(StartPoint,str,"""){始端と終端の位置を先に求める}で凌いでいますが、どうも汚いソースに見えて仕方がないのです。 しかし、このままではC言語に発展させたときに '"'や'A'、"ABC" が出てきたり、 HTMLでも 'Document.Write(OnClick="JavaScript:History.back")' 等といったシングル/ダブルクォーテーションをそれぞれ文字列の囲いとして使用する書式があるので挫折するのは目に見えています。 DLLやコンソールアプリのコマンドラインでのファイル名指定などではダブルクォーテーション内の半角スペースもうまく処理している(普通の半角スペースはスイッチの区切りとしてみなす)ので、何か良い方法があるのかと思い、質問させていただきました。 何卒、ご教授願います。

  • PHPの文字列をJavascriptの変数にする

    PHPの変数に格納された文字列を、直接Javascriptの変数の一部として格納しようと考えています。 例:) <script> var txt = "<?php echo $text; ?>"; </script> しかし、$textにダブルクォーテーションなどの文字が含まれていると、スクリプト全体が破綻します。今のところ、PHPの中で、問題を起こしそうな文字列を変換するように処理しています。 例:) $text = str_replace("\\", "\\\\", $text); $text = str_replace("\"", "\\\"", $text); $text = str_replace("\n", "\\n", $text); これよりもスマートな方法(たとえば用意されている関数を使うなど)がありますでしょうか。

    • ベストアンサー
    • PHP
  • ostringstreamからCの文字列を得る方法

    ostringstreamからCの文字列を得る方法について質問です。 ostringstreamのstr()メソッドを使えば、string型が得られると思うのですが、 以下の様にすると期待する様な結果が得られません。 ostringstream hoge; hoge << "HOGE" << "FUGA"; const char* p; p = hoge.str().c_str(); // NG str()メソッドで取得した結果を一旦string型に入れると期待する文字列を得る事が出来ます。 string tmp = hoge.str(); p = tmp.c_str(); // OK なぜp = hoge.str().c_str();では期待する結果("HOGEFUGA")を得る事が出来ないのでしょうか? コンパイラはVC++ 2010 Express Editionです。 よろしくお願いします。