エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


Swiffyで変換されたファイルの Base64変換された画像を置換する方法

      2014/06/26

Swiffyで変換されたファイルの Base64変換された画像を置換する方法

 
PHPで preg_match_all、preg_replace、str_replaceを使って任意の場所の文字列を置換する方法
 
 
Swiffyのテンプレートを作るツールを作成する際、置換する画像を「Base64」を目印にデータを置換する処理を作りましたが、置換する必要がない画像もあるわけです。
 
例えば、ABCという画像があり、Aと Cは置換するけど Bは置換せずにそのままにしておきたい。という場合です。
 
ですが、preg_replace、str_replaceの機能には、全部を置換する、1個目を置換する、と言った機能はありますが、「2個目」「1個目と 3個目」と言った場所を指定して変換する機能はありません。
 
PHPのコマンドのなかに、それを一つのコマンドで実行できるものはないようです。
 
そのため、いろいろ悩んだ結果、私が採った方法は、
 ・一度前から順番に置換
  (その際、元に戻す部分に印を付けていく)
 ・印がついている部分を元に戻す
という感じです。
 
具体的なソースは、以下の通りです。
 
 
 

// 置き換える場所を指定
$replase_array = array (1,4);
// 置き換えるコードのスタートのカウント
$replase_cnt = 1;
// swiffyで変換されたファイルの中身
$subject

// 置換する文字列の事前チェック
preg_match_all ( '/base64,[A-Za-z0-9+\/\n=]*"/', $subject, $matches_array );
$i = 1;
foreach ( $matches_array[0] as $val ) {
  $matches[$i] = $val;
  $i++;
}
$matches_cnt = count ( $matches );


// 「base64,」をキーに画像部分を置換
for ( $i = 1; $i <= $matches_cnt; $i++ ) {
  if ( in_array ( $i, $replase_array ) ) {
    $replacement = 'base64,"';
    $replase_cnt++;
  } else {
    $replacement = 'base64,"';
  }

  $subject = preg_replace( '/base64,[A-Za-z0-9+\/\n=]*"/', $replacement, $subject, 1 );
}

// 置換する必要がなかった部分を元に戻す
for ( $i = 1; $i <= $matches_cnt; $i++ ) {
  $replasement = 'base64,"';
  $subject = str_replace ( $replasement, $matches["$i"], $subject );
}

 
 
 
これを関数化できればいいのですが、
                         ↓こんな部分とか

 $replacement = 'base64,"';

                         ↓こんな部分とか

 $replacement = 'base64,"';

 
を汎用性がある書き方にする方法がピンと来なくて、今のところ関数化はしていません。
今後、何度か同じ様な処理が必要になった際に、どのように汎用的な関数にするべきか、改めて考えたいと思います。

 - Google Swiffy・Google関連

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

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

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

Googleマップの企業名検索で出る人気キーワードを変更する方法を探る

企業名検索をして表示されるキーワードは気になるところですが、この項目を変更することができるのか?調べて見ましたが編集できないようです。

Google Swiffyの使い方 【4】Swiffyに FlashVars的テキスト渡しで発生する不具合(テキストの背景が黒くなる)(テキストが上にずれる)

Google Swiffyの使い方 【4】Swiffyに FlashVars的テキスト渡しで発生する不具合(テキストの背景が黒くなる)(テキストが上にずれる)

Google Swiffyの使い方 【2】日本語の文字化けについて

Google Swiffyの使い方 【2】日本語の文字化けについて。Google Swiffyは日本語に対応していませんので、その対応方法についての説明です。

Google Swiffyの使い方 【5】Swiffyの画像を差し替える方法

Google Swiffyの使い方 【5】Swiffyの画像を差し替える方法を解説。

Google reCAPTCHAのSite key、Secret keyの取得方法・20170408バージョン
Google reCAPTCHAのSite key、Secret keyの取得方法・20170408バージョン

ログイン画面や登録画面に出てくるreCAPTCHAの「私はロボットではありません」の実装には利用するサイトの登録が必要。その登録方法を詳細解説。設定ミスによる不具合の分類、解決方法を解説。

ブログを何時に更新?投稿時間でアクセス数をアップさせる方法

ブログの更新時間を調整してアクセス数をアップさせる方法の解説です。自分のサイトのアクセス状況を知ることも大切でそれによってわかることも解説しています。

Google Swiffyの使い方 【3】Swiffyに FlashVars的にテキストを渡す方法(Swiffyでは扱えない文字「%」「+」「&」)

Google Swiffyの使い方 【3】Swiffyに FlashVars的にテキストを渡す方法(Swiffyでは扱えない文字「%」「+」「&」)

GoogleのSNS・Google+とFacebookの違いと設定方法解説

GoogleのSNSであるGoogle+の特徴(Facebook、Mixiとの違い)を解説し、アカウントの設定方法の説明。

Google Swiffyの使い方 【1】基本編

Google Swiffyの使い方 【1】基本編。Google Swiffyの使い方を説明するシリーズの 1本目として、基本的な使い方、仕組みを説明します。

ads.txtの設置方法解説。AdSenseの警告への対処と設置の確認方法
ads.txtの設置方法解説。AdSenseの警告への対処と設置の確認方法

ある日突然Googleがads.txtを設置せよと警告を発した。AdSenseの画面に真っ赤な警告が表れて戸惑ったが、ads.txtは簡単な1行のテキストファイルを設置するだけなので、作業をする気になれば簡単だ。