お世話になります
phpのpreg_replaceで質問です
下記の様な記述にて文字列の置換をしています
$body = preg_replace("/cid:(\d{2,})@(\d{6}).(\d{6})/","/bl/id/$1/",$text);
コレを改良してcidの次に入る値で処理を分けたいのですが、うまくいきません。
どなたかご教授お願い致します
$arr = array("gif","jpg"."png");
$body = preg_replace("/cid:(\d{2,})@(\d{6}).(\d{6})/","/bl/id/$1/$arr[$1]",$text);
宜しくお願い致します
No.1ベストアンサー
- 回答日時:
具体的に、どういうデータをどういうデータに加工したいか例示した方が
より適切な回答を得られるかと
この回答への補足
回答頂き有り難うございます
例示と致しましては、下記のようになります
$arr = array("gif","jpg"."png");
$body = preg_replace("/cid:(\d{2,})@(\d{6}).(\d{6})/","/bl/id/$1/$arr[$1]",$text);
↓↓↓↓↓↓↓↓↓↓↓
$arr = array("gif","jpg"."png");
$body = preg_replace("/cid:02@123456.123456/","/bl/id/2/jpg",$text);
No.2
- 回答日時:
>$arr = array("gif","jpg"."png");
「jpg」と「png」を「.」で結合していますが、これは「,」で分離したい?
>cid:(\d{2,})
で得られるものは例示だと「02」に当たる部分ですが
$arr["02"]を参照しても得るものはありませんが、02を数値として読み替えて
$arr[2]を参照したい?
また$arr[2]は「png」だけど、例示だと「jpg」、書き間違い?
$arr[xx]のxxがキーとして存在しない場合、例外処理など放置でよい?
>@(\d{6}).(\d{6})
このままだと「.」は「なにか1文字」にマッチするので「.」という文字ではない
「\.」(より厳密には「\\.」)にしないとまずいです
以上踏まえて、かなり好意的に解釈してこんな感じ?
以前はe修飾子というやり方もありましたが今は非推奨のようなので
コールバックで処理しています
<?PHP
$arr = array("gif","jpg","png");
$text="cid:02@123456.123456";
$pattern="/cid:(\d{2,})@(\d{6})\\.(\d{6})/";
$body=preg_replace_callback($pattern,function ($matches) use ($arr){
$num=(int) $matches[1];
return "/bl/id/".$num."/".$arr[$num];
},$text);
print $body;
?>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- オープンソース Python openpyxlを使用したセル番地の使用について 1 2023/08/03 22:05
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- Visual Basic(VBA) Excel VBA メール作成について 本文の中にExcel でコピーした図を上下に2つ 貼り付けを 2 2023/06/14 01:48
- Access(アクセス) Accessのテキストボックスの入力文字制限 1 2023/01/18 20:43
- Visual Basic(VBA) 指定文字を太字にするVBAを別シートのセルを指定する構文(改良について) 6 2022/08/27 22:11
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- Visual Basic(VBA) Excel vba で1と10を正確に判断させる方法を教えてください。 TからU列に1と入力があれば 3 2022/12/26 16:54
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
foreachで上限回数指定方法また...
-
構造体の中でユーザー定義型の...
-
$_POST受信で必要項目のみを結...
-
二次元配列の分割
-
ラジオボタンをランダムに表示...
-
配列同士の足し算のループ処理
-
fgetc関数について
-
doxygenを使用する環境について
-
php 1桁になるまでの和 スマー...
-
$_SESSIONに二次元配列を使える...
-
Smartyの自作プラグインで配列...
-
スカラーのベクトル微分
-
配列をループでたくさん宣言し...
-
mysqlと出力側PHPの文字コード...
-
配列にある文字列を1つの変数に...
-
プルダウンメニューにDBの内容...
-
配列の要素(value)に、変数を...
-
STLのvectorで作った配列をメン...
-
C言語 最大値と最小値を求めて...
-
プログラミングのPythonのnoteb...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
smartyのforeachの使い方
-
マッチング処理(1:N)
-
foreachで上限回数指定方法また...
-
多次元配列を、1次元の配列にす...
-
foreachの間にテーブルの<TR>を...
-
PHP、{}記号の意味
-
VB.NET で 二次元のハッシュは...
-
$_POST受信で必要項目のみを結...
-
3つの連想配列を交互に代入し...
-
PHP:ツリー構造をulとli要素に...
-
foreachで配列を、左から縦3列...
-
PHPの構文で間違えが分からない
-
PHPで連想配列のプルダウンメニ...
-
添え字が全て文字列のPHPの多次...
-
テーブルデータ表示
-
Smartyでインクリメント
-
PHPで変数名にハイフンを使うに...
-
POSTで渡されるデータの数がわ...
-
Delphi XEの警告文を消したい
-
配列の要素の値をループ中に変...
おすすめ情報