preg_replaceで加算する方法

例えば、「ファイル1」という文字列を「ファイル2」へ置換する場合。

// 失敗
preg_replace( '/(\d+)$/', '$2 + 1', 'ファイル1' );
// 成功
preg_replace( '/(\d+)$/e', '"$2" + 1', 'ファイル1' );

重要なのは修飾子「e」。

PHP: 正規表現パターンに使用可能な修飾子 – Manual

e (PREG_REPLACE_EVAL)

この修飾子を設定すると、preg_replace()
は、置換文字列において後方参照に関する通常の置換を行った後、PHP コードとして評価し、検索文字列を置換するためにその結果を使用します。置換された後方参照においては、単引用符や二重引用符、バックスラッシュ (\)および NULL 文字はバックスラッシュでエスケープされます。

で、僕が本当にやりたかったのは「ファイル名-1」を「ファイル名-2」へと置換すること。-(ハイフン)がマイナスと判定されるので少し戸惑った。解決法は以下。

// 計算する部分を()で囲む
preg_replace( '/(-)(\d+)$/e', '"$1".("$2" + 1)', 'ファイル名-1' )

バックスラッッシュつけたりいろいろやって上記で解決。引用符も試行錯誤でエラーが出なくなったものを掲載してるので、もっとスマートな囲み方があるかも。

MW WP Form

MW WP Form はショートコードベースのフォームプラグインです。多くの機能を持っており、例えば、多くのバリデーションルール、問い合わせデータの保存、そしてグラフ機能集計などを使用することができます。

さらに詳しく
Habakiri

Habakiri

Bootstrap ベースのシンプルな WordPress テーマ。レスポンシブ、多くのカスタマイズ機能。圧縮された CSS・JS を使用する高速化対策。Microformats 対応。Sass、クラスベースの functions.php。

さらに詳しく
basis-stylus

Basis

軽量なレスポンシブ Stylus/CSS フレームワーク。Flexbox ベースのグリッドシステム、疎結合なコンポーネント、バーティカルリズム。

さらに詳しく