お世話になります
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で上限回数指定方法また...
-
3つの連想配列を交互に代入し...
-
設定ファイルの読み書き
-
マッチング処理(1:N)
-
smartyでtplファイルでの2次元配列
-
ラジオボタンをランダムに表示...
-
スカラーのベクトル微分
-
プルダウンメニューにDBの内容...
-
配列をループでたくさん宣言し...
-
String だと「 ByRef引数の型が...
-
ログファイルの古い日付の行を...
-
pythonのファイルの並びでの読...
-
file_existsでファイル名の部分...
-
pg_copy_fromの使い方について...
-
foreachのなかで次のキーを参照...
-
【PHP】配列のキー名の修正は可...
-
日付、時間の2段階でソート
-
CakePHPのfindの取得件数は?
-
curlをPHPで書く方法
-
ネストが深い時のforeachはどう...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
多次元配列を、1次元の配列にす...
-
PHPで変数名にハイフンを使うに...
-
リストボックス複数選択抽出方法
-
foreachで上限回数指定方法また...
-
foreachの間にテーブルの<TR>を...
-
PHP、{}記号の意味
-
マッチング処理(1:N)
-
PHPの構文で間違えが分からない
-
VB.NET で 二次元のハッシュは...
-
SELECT 使用時の bindValue の...
-
$_POST受信で必要項目のみを結...
-
ftokが動かない?
-
3つの連想配列を交互に代入し...
-
PHPで連想配列のプルダウンメニ...
-
ラジオボタンをランダムに表示...
-
POSTを配列として送信し、キー...
-
smartyのforeachの使い方
-
元号の表示
-
smarty 列行数制御方法
-
配列からプルダウン用のHTMLを生成
おすすめ情報