ホームページ >バックエンド開発 >PHPチュートリアル >preg_replace_callback 替えpreg_replace

preg_replace_callback 替えpreg_replace

WBOY
WBOYオリジナル
2016-06-23 13:51:491172ブラウズ

$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で出力したものと同じです



ディスカッションへの返信(解決策)

何をしたいのかわかりません
例の結果は正しくありません!

2 番目の出力は間違っており、次のとおりです

$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'] );

echo "
"; <br> print_r($teem); <br> 出力 <br> 配列 <br> ( <br> [0] =&gt ; 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',
function($ r) {
lt; pre>";
print_r($teem);
出力
a:2:{s:4:"type";a:3:{i:0;s:8:"Personal請求書";i:1;s :8:"エンタープライズ請求書";i:2;s:12:"";}s:4:"レート";a:3:{i:0;d:6;i :1;d:6;i :2;d:0;}}

エンタープライズ請求書の末尾の S:0: "" は s:12:"" になります。 12 個の長さが追加されています。


値が空の場合は考慮されません
' /s:d+:"(.+?)";/s' を変更します
'/s:d+:"(.*?) に変更します";/s'


値が空の場合は考慮されません '/ s:d+:"(.+?)";/s' を変更します

'/s:d+:"(.* ?)";/s'

ありがとうございます

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。