wordpressでimg要素に勝手につけられたsizes属性、width属性、height属性を削除する方法


表題の件、ググると、
add_filterを使った方法(↓)や、

wp_calculate_image_srcsetを使った方法(↓)などが

でてくるのだけど、
ちょっと強引だけど、こんな方法もあるよ、というご紹介。

以下のコードをテーマのfunctions.phpに追加してやればよい。

function custum_theme_content_replacement($the_content) {
        $return = $the_content;
        $return = preg_replace(
            array("/(sizes|width|height)=\"((?:\\\.|[^\"\\\])*)\"/i")
            ,array(" ")
            ,$return
        );
        return $return;
}
add_filter('the_content','custum_theme_content_replacement');

まぁ見てもらえばわかるけど、コードの内容をかいつまんで説明すると、コンテンツを表示するときにsizes属性、width属性、height属性を正規表現を使ってまるっと置換して削除しちまえ、ってことをしている。

かなり強引なやり方だけどね。
選択肢の一つにしてもらえれば。

ダブルクオートやシングルクオートで囲まれた文字を抽出するための正規表現


HTMLの属性値を正規表現で書き換えたいときなど、ダブルクオートやシングルクオートで囲まれた文字を正規表現で抽出する場合は以下の正規表現で抽出が可能。

"((?:\\.|[^\"\\])*)"

HTMLの属性値を限定したい場合は以下のようにすればよい。

(sizes|width|height)="((?:\\.|[^\"\\])*)"

この正規表現の出典は以下のサイトより。

「人力検索はてな」より抜粋
http://q.hatena.ne.jp/1246344237

正規表現の読み方は以下のようになります。
——————————————
"              # 文字列の開始
 (               # キャプチャするグループ化
  (?:              # キャプチャしないグループ化
   \\.               # バックスラッシュによってエスケープされた任意の一文字
   |                 # または
   [^\"\\]           # ダブルクォートとバックスラッシュ以外の一文字
  )                # グループ化終了
  *                # ↑の 0 回以上の繰り返し
 )               # グループ化終了
"              # 文字列の終了
——————————————

なおPHPのpreg_replaceで使用する場合には以下のようにエスケープする必要がある。

preg_replace(
    array("/(sizes|width|height)=\"((?:\\\.|[^\"\\\])*)\"/i")
    ,array("(変換したい文字列)")
    ,$return
);

エロい人ありがとう。備忘録として。

日付や時間を正規表現で検索したい


いまさらながらに正規表現を勉強したのでまとめてみた。

なお、サンプル作製にあたり、以下のサイトを参考にした。

といっても、トライアンドエラーの試行錯誤が必要だったけど・・・・

正規表現サンプル集

http://hodade.adam.ne.jp/seiki/

PHP 基礎編9 – 正規表現、マッチ、置き換え、ereg、eregi、eregi_replace – SAK Streets

http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/php_k09.htm

カッコに囲まれた値の検索(すべての文字)

\(.+?\)

検索結果:
○ (1234)
○ (abcd)
○ ( 1234 )
○ ( 12 34 )
○ ( abcd )
○ ( ああああ )

カッコに囲まれた値の検索(半角数字)

\(\d+?\)

検索結果:
○ (1234)
× (abcd)
× ( 1234 )
× ( 12 34 )
× ( abcd )
× ( ああああ )

カッコに囲まれた値の検索(半角数字のみ+スペース含む)

\([\s\d]+?\)

検索結果:
○ (1234)
× (abcd)
○ ( 1234 )
○ ( 12 34 )
× ( abcd )
× ( ああああ )

日付の検索

\d{4}[-/._]\d{1,2}[-/._]\d{1,2}

検索結果:
○ 2011/01/01 
○ 2011/1/1 
× 2011 / 01 / 01 
× 2011 / 1 / 1 
○ 2011-01-01
○ 2011-1-1 
× 2011 - 01 - 01 
× 2011 - 1 - 1 
○ 2011.01.01 
○ 2011.1.1 
× 2011 . 01 . 01 
× 2011 . 1 . 1 
○ 2011_01_01 
○ 2011_1_1 
× 2011 _ 01 _ 01 
× 2011 _ 1 _ 1 
× 2011//01/01 
× 2011--01-01
× 2011..01.01 
× 11/01/01 

時間の検索(欠点あり)

[\s]([0-9]|[0-1][0-9]|[2][0-3])(:|-|\.)([0-9]|[0-5][0-9])(:|-|\.)([0-9]|[0-5][0-9])[\s]

※時間文字列の前に空白スペースが入ってしまう。

検索結果:
○ 2011/01/01 11:11:11
○ 2011-01-01 11-11-11
○ 2011.01.01 11.11.11
× 2011/01/01 11 11 11
○ 2011/01/01 21:11:11
× 2011/01/01 25:11:11
○ 2011/01/01 01:01:01
○ 2011/01/01 0:0:0
○ 2011/01/01 1:1:7
○ 2011/01/01 1:1:7 ←最終文字が半角空白
× 2011/01/01 1:1:70
○ 2011/01/01 23:59:59
○ 2011/01/01 00:00:00

時間の検索(欠点あり)

\d{1,2}?(:|-|\.)\d{1,2}(:|-|\.)\d{1,2}

※「△」の文字列は日付部分もマッチしてしまう。

検索結果:
○ 2011/01/01 11:11:11
△ 2011-01-01 11-11-11
△ 2011.01.01 11.11.11
× 2011/01/01 11 11 11
○ 2011/01/01 21:11:11
○ 2011/01/01 25:11:11
○ 2011/01/01 01:01:01
○ 2011/01/01 0:0:0
○ 2011/01/01 1:1:7
○ 2011/01/01 1:1:7 ←最終文字が半角空白
○ 2011/01/01 1:1:70
○ 2011/01/01 23:59:59
○ 2011/01/01 00:00:00