ハイライト処理での不具合 - PHPプロ!Q&A掲示板

557

  • 0P

ハイライト処理での不具合

質問日時 / 2007年6月26日 18:08    回答数 / 4件

Questioner:  sevenina  このエントリーをはてなブックマークに追加 

キーワード / highlight_string    ハイライト   

いつもお世話になっています。

ハイライトについて教えていただきたいのですが、
今、下のコードのようなものを書いています。
これの目的は、
■textareaに入力されたコードをハイライト処理する

ということにつきるのですが、

一部動作がおかしい結果が出る場合があるのです。

それは、入力値に例えば

   echo("aaa");

と入力すると、
結果というか処理した後に、
     echo("aaa\");
と\マークが表示されるのです。

highlight_string()処理部の結果と思われるのですが
これを回避するにはどうしたらいいのか不明です。


どうぞよろしくお願いいたします。



  1. <?php
  2.   $SELF = $_SERVER['PHP_SELF'];
  3.  
  4.   $code = highlight_string($_POST['code'],true);
  5.   
  6.   $code2=str_replace("&lt;?","&amp;lt;?",$code);
  7.   $code2=str_replace("?&gt;","?"."&amp;"."gt;",$code2);
  8.     
  9. ?>
  10.  
  11. <html>
  12. <head>
  13. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  14. <title>PHPコードのハイライト表示</title>
  15. </head>
  16.  
  17. <body>
  18.   <div id="content">
  19.     <fieldset>
  20.       <form method="post" action=<?php echo($SELF);?>>
  21.       <label for="code">■コードを入力してください</label><br />
  22.       <textarea cols="100" rows="10"name="code" id="code"></textarea><br />
  23.       <input id="btn" type="submit" value="ハイライト" /><br />
  24.       <label for="res_code">■ハイライト結果のコード</label>
  25.       <textarea cols="100" readonly="readonly" rows="10" name="res_code" id="res_code"><?php echo($code2);?></textarea><br />
  26.       </form>
  27.     </fieldset>
  28.     <div id="result">
  29.       <p>ちなみにこんな感じ</p>
  30.       <?php echo($code);?>
  31.     </div>
  32.   </div>
  33. </body>
  34. </html>

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┣A01kaitauこんにちは。 当方では記載のサンプルで現象をでき
┃┗A01-1sevenina>kaitauさん ありがとうございます。 magic_quote
┗A02taktoこんにちは。 既にkaitauさんが指摘なさっています
 ┗A02-1sevenina>taktoさん ありがとうございます。 わざわざzend

回答一覧

並び替え:

A01 満足
answererkaitau [6月27日 10:00]

こんにちは。

当方では記載のサンプルで現象をできませんでした。
ひょっとして
echo("aaa\"); だけでなく
echo(\"aaa\");
になってるとかでは?

magic_quotes_gpc
などのiniの設定は大丈夫ですか。

この意見に回答する

ツリーへ TOPへ

A01-1
replyersevenina [6月27日 11:54]

>kaitauさん

ありがとうございます。
magic_quotes_gpcのini設定を変えたらうまくいきました。
ご指摘とおり、echo(\"aaa\");でした。

この意見に回答する

ツリーへ TOPへ

A02 満足
answerertakto [6月27日 10:32]

こんにちは。

既にkaitauさんが指摘なさっていますが、magic_quotes_gpcがOnになっていると

echo("aaa");



echo(\"aaa\");

になります。私の環境(PHP5.2.1/4.4.5)で設定のOn/Offで変わることを確認しました。
片方だけエスケープされるというのはちょっと考えにくいですし、php.iniの
設定内容を確認されてみてはいかがでしょうか。

念のためzend_highlight.cも見たのでこのメソッドのバグというのはなさそうかなと。

この意見に回答する

ツリーへ TOPへ

A02-1
replyersevenina [6月27日 11:56] (最終編集:6月27日 16:19)

>taktoさん

ありがとうございます。
わざわざzend_highlight.cまでみてもらって。。すみません。
php.iniの設定でした。

今までiniファイルのほうを気にするようなプログラムを書いたことが
なかったので、いい勉強になりました。

ありがとうございました。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
負荷時のmysql_connect()エラー
 このエントリーをはてなブックマークに追加 
A
これはPHPというよりOSまたはMySQLのコミュニティで質問されたほうがいいと思います。 ぱっと思いついた範囲で記すと MySQL等のDBに「ある時点において同時に接続可能なクライアントの最大数」に制限があるよう...

>>続きを読む

今回のような実践的な経験がエンジニアのキャリアに繋がると思います。是非サービスを成功させて下さい!

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)