PHPの文字列

PHPのヒアドキュメントで改行コードが CR(0x0D)LF(0x0A) のものをserialize()すると、unserialize()でfalseになるってのに悩まされ、結局、str_replace(array(“\r\n”,”\r”),”\n”,$string); ってやってからserialize()する事で解決した。

で、これでホンマに大丈夫か? と色々検索してると、
「str_replace( “\r\n”, ‘\n’, $text ); で置換できない。なんでだ?」 と書いてあるページを見つけた。

確かにシングルクォートで囲ったらエスケープシーケンスは単なる文字列になっちゃうねえ…。それはそういうルールだからしょうがないとしか言いようがない。

逆に、シングルクォートで囲ったものも、エスケープシーケンス有効ってルールだったら、エスケープシーケンス無効化の為に’\\n’とか書かないといけなくなるってのは嫌すぎる。

なんでこういうので引っ掛かるのかなあ? と考えるに “文字列”が文字列を現し、’A’は一文字を現すC言語やってた人ならそういう書き方になるのでは?と思いついた。

わしもPHPやり始めた頃は、文字列は”文字列”で一文字は’A’みたいな書き方してた事があったし、まあ、PHPのルールを学んでいく内に段々分かってくるものってのがあるねえ。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください