Rumah >pembangunan bahagian belakang >tutorial php >Analisis terperinci penyahserialisasian PHP tentang pelarian watak

Analisis terperinci penyahserialisasian PHP tentang pelarian watak

WBOY
WBOYke hadapan
2022-04-14 12:06:495641semak imbas

Artikel ini membawakan anda pengetahuan yang berkaitan tentang PHP, yang terutamanya memperkenalkan isu berkaitan tentang penyingkiran aksara penyahserikatan Rentetan selepas pensirilan PHP telah diganti atau diubah suai, mengakibatkan Apabila panjang rentetan berubah, ia adalah sentiasa bersiri dahulu dan kemudian diganti dan diubah suai. Saya harap ia akan membantu semua orang.

Analisis terperinci penyahserialisasian PHP tentang pelarian watak

Kajian yang disyorkan: "Tutorial Video PHP"

Intipati: Tertutup
Kategori: Lebih banyak aksara, lebih sedikit aksara
Perkara biasa:

  1. Rentetan bersiri oleh PHP telah diganti atau diubah suai, mengakibatkan perubahan panjang rentetan
  2. Sentiasa bersiri dahulu, kemudian lakukan operasi penggantian dan pengubahsuaian

Klasifikasi

Pertambahan aksara

  • Idea:
    Mengikut format rentetan selepas bersiri Dan ciri, bilangan aksara mengenal pasti panjang yang akan dikenali kemudian
    Untuk mengubah suai atribut, ia mesti diganti, yang boleh dikawal oleh rentetan yang diluluskan
    Untuk menutup petikan berganda sebelumnya, hantarkannya kepada yang berikut Aksara
    yang akan dibina tidak sepadan dengan panjang rentetan sebelumnya pada masa ini, dan pembinaannya tidak sah
    Penyelesaian: Mengikut perubahan dalam panjang aksara gantian, picit rentetan yang dibina keluar daripada julat panjang dan menjadi bahagian seterusnya
    (untuk digunakan Penjelmaan panjang semasa penggantian mengisi ruang dalam rentetan yang disuntik)
  • petua:
  1. Hakim itu selepas penapisan, setiap aksara akan mempunyai x lebih aksara daripada aksara asal
  2. Tentukan panjang n subrentetan sasaran untuk disuntik
  3. Ulang aksara yang disuntik n/x kali, dengan aksara yang disuntik ( panjang kod pembinaan ÷ bilangan aksara tambahan)
  • Contoh:
    Matlamat: Ubah suai nilai dalam objek, contohnya, umur perlu ditukar kepada 20 Ini membawa kepada ralat bacaan peruntukan panjang dan ralat output semasa penyahserikatan
<?php function filter($string){
    $filter = &#39;/p/i&#39;;
    return preg_replace($filter,&#39;WW&#39;,$string);
}
$username = &#39;purplet&#39;;
$age = "10";
$user = array($username,$age);

var_dump(serialize($user));
echo "<pre class="brush:php;toolbar:false">";
$r = filter(serialize($user));
var_dump($r);
var_dump(unserialize($r));
?>
Jadi pertimbangkan untuk membina melarikan diri watak melalui sifat bacaan panjangnya

Untuk tukar 10 kepada 20, mula-mula tentukan rentetan yang akan dibina kemudian:
var_dump(serialize($user));    # 序列化
echo "<pre class="brush:php;toolbar:false">";
$r = filter(serialize($user)); # 替换后序列化
var_dump($r);
var_dump(unserialize($r));     # 打印反序列化


Tentukan panjang :16 (iaitu, rentetan yang masuk memerlukan 16 aksara lagi untuk meletakkan aksara ini ke dalam atribut seterusnya) Analisis terperinci penyahserialisasian PHP tentang pelarian watak Setiap kali terdapat 1 watak lagi, jadi 16 p
diperlukan, jadi masukkan:

Output hasil:
原字符串:";i:1;s:2:"10";}
目标子串:";i:1;s:2:"20";}



Pengurangan aksara
Analisis terperinci penyahserialisasian PHP tentang pelarian watakLarian nilai

Penapisan nilai, nilai sebelumnya memuatkan kunci dan nilai terakhir (Sehingga kurungan kiri) Analisis terperinci penyahserialisasian PHP tentang pelarian watak

Contoh

Sasaran: tukar umur kepada 20

Serupa dengan kod di atas, kecuali 2 p diganti pada masa ini ialah a w, aksara dikurangkan
    Jika nilai yang sama tidak sepadan, penyahserikatan akan gagal

  • nama pengguna: kod yang diperlukan untuk membina melarikan diri
umur: membina kod melarikan diri
<?php function filter($string){
    $filter = &#39;/pp/i&#39;;
    return preg_replace($filter,&#39;W&#39;,$string);
}
$username = "ppurlet"
$age = "10";
$user = array($username,$age);

var_dump (serialize($user));    # 序列化
echo "<pre class="brush:php;toolbar:false">";
$r = filter(serialize($user)); # 替换后序列化
var_dump ($r);
var_dump (unserialize($r));     # 打印反序列
?>


A diikuti dengan rentetan umur masuk Kira panjang pembinaan


, iaitu, 13 aksara ini akan diduduki

Setiap perubahan 2 p kepada 1 w adalah bersamaan dengan melarikan diri satu bit, jadi masukkan 13*2=26 p, panjang aksara ditandakan sebagai 26, yang menjadi 13 w, dan 13 aksara seterusnya menduduki baki 13 bit Analisis terperinci penyahserialisasian PHP tentang pelarian watak第一步

Analisis terperinci penyahserialisasian PHP tentang pelarian watak

muatan:


Ringkasan Analisis terperinci penyahserialisasian PHP tentang pelarian watak

Pertambahan aksara
username='pppppppppppppppppppppppppp'
age=A";i:1;s:2:"20";}

Lihat tanda petikan selepas penghujung parameter pertama ke kanan terakhir Panjang kurungan (rentetan sasaran) n melihat setiap kenaikan gantian x

    dibina dengan n/x aksara gantian dan kod pembinaan, menghantar objek bersiri
    1. Pengurangan aksara
    2. Gunakan parameter kedua untuk membina
    3. Tetapkan penutupan pada permulaan: A" (kami akan mempertimbangkan cara membinanya kemudian)
  1. Lihat yang pertama Berapa banyak aksara yang terdapat dalam petikan penutup tandakan selepas parameter n
    1. Penggantian mengurangkan x aksara
    2. Cipta objek:
    3. Parameter pertama lulus dalam n* (x 1) aksara gantian
    4. Parameter kedua diluluskan dalam rentetan yang dibina
    5. Pembelajaran yang disyorkan: "
      Tutorial Video PHP
      "

Atas ialah kandungan terperinci Analisis terperinci penyahserialisasian PHP tentang pelarian watak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:csdn.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam