ホームページ >バックエンド開発 >PHPチュートリアル >preg_replace_callback 替えpreg_replace
$tem = $arr['invoice_type'];
echo "31b6555d087367405c89d1f1b0ed5a95"
print_r($teem) );
出力
配列
(
[0] => a:2:{'s:'.strlen('type').':"type";'a:3:{i:0;'s :'.strlen('個人請求書').':"個人請求書";'i:1;'s:'.strlen('ビジネス請求書').':"ビジネス請求書";'i:2;'s :'.strlen('').':"";'}'s:'.strlen('rate').':"rate";'a:3:{i:0;d:6;i: 1;d:6;i:2;d:0;}}
)
$teemm []= preg_replace_callback('!s:(d+):"(.*?)";!s', function ($一致) {return strlen('$2').':"$2";';}, $arr['invoice_type'] );
print_r($teemm);
(
[0] => a:2:{2:"$2";a:3:{i:0;2:"$2";i:1;2:"$2";i:2;2 :"$2";}2:"$2";a:3:{i:0;d:6;i:1;d:6;i:2;d:0;}}
)
作り方preg_replace_callback 出力情報はpreg_replaceで出力したものと同じです
ディスカッションへの返信(解決策)
何をしたいのかわかりません $teem []= preg_replace('!s:(d+):"(.*?)";!se', "'s:'.strlen('$2 ' ).':"$2";'", $arr['invoice_type'] );
echo "377d8c38e4f6074ad18c810b712d18d6 a :2:{s:4:"タイプ";a:3:{i:0;s:8:"個人請求書";i:1;s:8:"企業請求書";i:2;s:0 :"";}s:4:"レート";a:3:{i:0;d:6;i:1;d:6;i:2;d:0;}}
)
私何がしたいのか分かりません
例の結果は間違っています!
2 番目の出力は間違っており、次のとおりです
$teem []= preg_replace('!s:(d+):"(.*?)";!se', "'s:'.strlen(' $2 ').':"$2";'", $arr['invoice_type'] );
"; <br> print_r($teem); <br> 出力 <br> 配列 <br> ( <br> [0] => ; a:2:{s:4:"タイプ";a:3:{i:0;s:8:"個人請求書";i:1;s:8:"企業請求書";i:2;s : 0:"";}s:4:"レート";a:3:{i:0;d:6;i:1;d:6;i:2;d:0;}} <br> ) <br> <br> <pre class="sycode" name="code">$s = preg_replace_callback('/s:\d+:"(.+?)";/s', function($r) { $n = strlen($r[1]); return "s:$n:\"$r[1]\";"; }, $s);
マスター、あなたの指示に従って出力データを次のように変更しました
コード
$teem = preg_replace_callback('/s:d+:"(.+?)";/s', '/s:d+:"(.* ?)";/s'