牛、豚、鶏、どれか一つ食べられなくなるとしたら?

こんにちは
PHP4のプログラムをPHP5.2に移植しましたが、
下記のコードの表示がおかしいです。
<?
$filename="C:\Tools\f2\it.jam";
echo $filename;
?>
PHP4の時はきちんと表示されましたが、PHP5になったら「C:\Tools2\it.jam」と表示し、パッケージを見ると「C:\Tools\x0c2\it.jam」PHPからと戻されています。
どうも「\f」がエスケープされ、変になってしまうのです。「\x2」もだめらしいです。
なるべく、プログラムを変更しないで、対策は可能でしょうか?(例:php.iniとか、Apacheの設定変更等)

急ぎで申し訳ありませんが、お分かりの方がいらっしゃいましたらご教示のほうお願いします。

A 回答 (3件)

因みに「\T」や「\i」がどう解釈されるかは「未定義」なので



$filename="C:\Tools\f2\it.jam";

と書いた場合、$filenameにどんな文字列が設定されるかも「未定義」です。

つまり「何が起こるか判らない」って事です。

今まで「何が起こるか判らないプログラム」のまま、うまく動いていたのが不思議です。

私が何を言っているのか判らなかったら
http://nyx.pu1.net/reference/basic/escape.html
を良く読んで下さい。

因みに「'」を使えば

<?
$filename='C:\Tools\f2\it.jam';
echo $filename;
?>

と書いても構いません(「'」の中身は、「\」によるエスケープ処理は行われない」ので)
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
シングルクォートもしくは\\で対策するしかないですよね。

お礼日時:2011/08/01 15:15

>因みに「\T」や「\i」がどう解釈されるかは「未定義」なので


未定義ではないんじゃね(その仕様、俺も嫌いだが)

http://www.php.net/manual/en/language.types.stri …

>\f form feed (FF or 0x0C (12) in ASCII) (since PHP 5.2.5)

>As in single quoted strings, escaping any other character will result in the backslash being printed too. Before PHP 5.1.1, the backslash in \{$var} had not been printed.
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
ここに書いてあるのですね。

お礼日時:2011/08/01 15:15

phpは大昔から「\は\\と書く」のがお約束だけど?



<?
$filename="C:\\Tools\\f2\\it.jam";
echo $filename;
?>

PHPが出来た原初の頃から\は\\って書かないとダメですよ。

ってか、貴方に「echoで改行したい時はどうしてたの?」って聞きたい。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

そうですよね。改行は/n/rとかですもんね・・

お礼日時:2011/08/01 15:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!