タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

hnwに関するYudoufuのブックマーク (2)

  • 例えばPHPのpreg_replace関数でe修飾子を避ける - hnwの日記

    (2015/04/19追記)e修飾子はPHP 5.5からdeprecatedになっています。また、PHP7からは廃止されます。 PHPのpreg_replace関数では、e修飾子が利用できます。これはPerlから輸入された機能で、置換後パターンの文字列をPHP文法に従って評価する(evalする)というものです。Perlを知らないとあまり使わない機能かもしれませんが、Perlを知っているとPHPでも使いたくなるのではないでしょうか。記事では、preg_replace関数でe修飾子を使う場合の注意点を指摘し、代替案を示します。 preg_replace関数のe修飾子 preg_replace関数のe修飾子は次のような機能です。 e 修飾子を設定すると、preg_replace() は、参照先の対応する置換を行う際に replacement 引数を PHP コードであるとして取り扱います。re

    例えばPHPのpreg_replace関数でe修飾子を避ける - hnwの日記
    Yudoufu
    Yudoufu 2010/08/15
    id:hnw はどういう経緯でこういう罠に気づくのか知りたい。
  • PHPの==演算子をわかりやすくするパッチ - hnwの日記

    PHPの==がキモい件」でも書きましたが、PHPの==は数値っぽいものに対してアバウトな比較を行う演算子です。 一方で、他の言語の==演算子は正確な比較を行うものばかりだと思います。他の言語の経験者がPHPのソースコードを読み書きする場合に、PHPの==演算子の挙動を想像することは困難です。 つまり、PHPの==演算子の問題点は、他の言語と異なる意味にも関わらず同じ表記を採用していることにあります。見ただけで「アバウトな比較を行う」と想像できれば混乱は避けられるはずです。 そこで、PHPにパッチを当て、新たな演算子を導入してみました。 <?php if ("01" ≒ "0x1") { echo '"01" ≒ "0x1" is true',"\n"; } if ("01" ≈ "0x1") { echo '"01" ≈"0x1" is true',"\n"; } if ("01" ≉

    PHPの==演算子をわかりやすくするパッチ - hnwの日記
    Yudoufu
    Yudoufu 2009/04/01
    わるくない。
  • 1