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

preg_replace_callback 替えpreg_replace

WBOY
リリース: 2016-06-23 13:51:49
オリジナル
1171 人が閲覧しました

$tem = $arr['invoice_type'];
echo "

"; <br /> 出力<br /> a:2:{s:4:"type";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 /> $teem []= preg_replace('!s:(d+):"(.*?)" ;!se', "'s:'.strlen('$2').':"$2";'", $arr['invoice_type'] ); <br /> echo "<pre class="brush:php;toolbar:false">" <br> print_r($teem) ); <br> 出力 <br> 配列 <br> ( <br> [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;}} <br> ) <br> <br> $teemm []= preg_replace_callback('!s:(d+):"(.*?)";!s', function ($一致) {return strlen('$2').':"$2";';}, $arr['invoice_type'] ); <br> print_r($teemm); <br> ( <br> [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;}} <br> ) <br> <br> 作り方preg_replace_callback 出力情報はpreg_replaceで出力したものと同じです<br> <br> <br> <br> </p>
<p>ディスカッションへの返信(解決策)</p>  何をしたいのかわかりません<br> 例の結果は正しくありません! <h2> </h2> 2 番目の出力は間違っており、次のとおりです <p class="sougouAnswer"> $teem []= preg_replace('!s:(d+):"(.*?)";!se', "'s:'.strlen('$2 ' ).':"$2";'", $arr['invoice_type'] ); <br> echo "<pre class="brush:php;toolbar:false">"; </p> print_r($teem); <p class="sougouAnswer"> 出力 <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> <br> 私何がしたいのか分かりません<br> 例の結果は間違っています!  </p> <p class="sougouAnswer"> </p>
<p class="yy"> 2 番目の出力は間違っており、次のとおりです <br> $teem []= preg_replace('!s:(d+):"(.*?)";!se', "'s:'.strlen(' $2 ').':"$2";'", $arr['invoice_type'] ); </p> echo "<pre class="brush:php;toolbar:false">"; <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> <div class="code" style="position:relative; padding:0px; margin:0px;"><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'

ありがとうございます

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート