Panduan Lanjutan phpSpider: Bagaimana untuk menggunakan ungkapan biasa untuk mengekstrak kandungan web?

WBOY
Lepaskan: 2023-07-24 20:30:01
asal
1455 orang telah melayarinya

Panduan Lanjutan phpSpider: Bagaimana untuk menggunakan ungkapan biasa untuk mengekstrak kandungan web?

Kata Pengantar:
Apabila membangunkan perangkak web, kita selalunya perlu mengekstrak kandungan tertentu daripada halaman web. Ungkapan biasa ialah alat berkuasa yang boleh membantu kami melakukan padanan corak dalam halaman web dan mengekstrak kandungan yang diperlukan dengan cepat dan tepat. Artikel ini akan memberi anda pemahaman yang mendalam tentang cara menggunakan ungkapan biasa untuk mengekstrak kandungan web dalam PHP, dan disertakan dengan kod contoh.

1. Sintaks asas ungkapan biasa
Ungkapan biasa ialah cara untuk menerangkan corak aksara. Gunakan ungkapan biasa untuk memadankan, mencari dan menggantikan rentetan secara fleksibel. Berikut ialah beberapa sintaks asas ungkapan biasa:

  1. Padanan aksara:
  2. .: Padankan mana-mana aksara
  3. []: Padankan mana-mana aksara dalam kurungan
  4. w: Padankan mana-mana huruf, nombor atau garis bawah
  5. nombor
  6. s: Padankan mana-mana aksara kosong
  7. : Padankan sempadan perkataan
  8. Ulangi padanan:
    • : Padankan 0 atau lebih ulangan aksara sebelumnya
  9. : Padanan 1 atau lebih banyak ulangan:
    • watak sebelumnya
  10. ? : Padankan 0 atau 1 ulangan watak sebelumnya
  11. {n} : Padankan dengan tepat n ulangan watak sebelumnya
  12. {n,} : Padankan sekurang-kurangnya n ulangan watak sebelumnya
  13. {n,m} : Memadankan sekurang-kurangnya n kali dan paling banyak m ulangan bagi watak sebelumnya
  14. Karakter melarikan diri:
  15. : Melarikan diri aksara khas, contohnya mewakili titik padanan No.

2. Gunakan fungsi preg_match. untuk pemadanan biasa
PHP menyediakan satu siri fungsi untuk memproses ungkapan biasa, yang paling biasa digunakan ialah fungsi preg_match. Fungsi ini digunakan untuk melakukan padanan rentetan biasa. Berikut ialah penggunaan asas fungsi preg_match:

$pattern = '/正则表达式/';
$string = '要匹配的字符串';
$result = preg_match($pattern, $string, $matches);
Salin selepas log masuk

Antaranya, $pattern ialah ungkapan biasa untuk dipadankan, $string ialah rentetan untuk dipadankan, $result ialah nilai Boolean hasil padanan dan $matches ialah tatasusunan untuk menyimpan hasil yang sepadan.

3. Contoh Demonstrasi
Mari kita gunakan contoh untuk menggambarkan cara menggunakan ungkapan biasa untuk mengekstrak kandungan web.

Katakan kita ingin mengekstrak semua pautan dari halaman web sasaran berikut:

<html>
<body>
<a href="https://www.example.com/link1">Link 1</a>
<a href="https://www.example.com/link2">Link 2</a>
<a href="https://www.example.com/link3">Link 3</a>
</body>
</html>
Salin selepas log masuk

Kita boleh menggunakan ungkapan biasa berikut untuk memadankan semua pautan:

$pattern = '/<as+href=["'](.*?)["'].*>(.*?)</a>/';
Salin selepas log masuk

Kemudian, kita boleh menggunakan fungsi preg_match_all untuk memadankan semua hasil Simpan ia dalam tatasusunan dua dimensi:

$pattern = '/<as+href=["'](.*?)["'].*>(.*?)</a>/';
$string = '
            
              Link 1
              Link 2
              Link 3
            
          ';
preg_match_all($pattern, $string, $matches);

var_dump($matches[1]);  // 输出所有链接
Salin selepas log masuk

Selepas melaksanakan kod ini, kami akan mendapat output berikut:

array(3) {
  [0]=>
  string(23) "https://www.example.com/link1"
  [1]=>
  string(23) "https://www.example.com/link2"
  [2]=>
  string(23) "https://www.example.com/link3"
}
Salin selepas log masuk

Dengan cara ini, kami berjaya mengekstrak semua pautan dari halaman web.

4. Nota
Perlu diperhatikan bahawa apabila menggunakan ungkapan biasa untuk pembangunan perangkak, anda harus memberi perhatian kepada perkara berikut:

  1. Rakus dan tidak tamak
    Secara lalai, padanan berulang ungkapan biasa adalah tamak , padankan sebanyak mungkin. Kita boleh menggunakan ? untuk menukar padanan tamak kepada padanan tidak tamak.

Sebagai contoh, ungkapan biasa berikut akan memadankan keseluruhan rentetan "abcdef" dengan rakus:

$pattern = '/a.*b/';
$string = 'abcdef';
preg_match($pattern, $string, $matches);
var_dump($matches[0]);  // 输出'abcdef'
Salin selepas log masuk

Jika kita menukar padanan tamak kepada padanan tidak tamak, hanya subrentetan terpendek akan dipadankan:

$pattern = '/a.*?b/';
$string = 'abcdef';
preg_match($pattern, $string, $matches);
var_dump($matches[0]);  // 输出'ab'
Salin selepas log masuk
  1. Pecahan baris HTML tags
    Apabila mengekstrak kandungan halaman web, anda sering menghadapi pemisah baris yang terkandung dalam teg HTML. Untuk memadankan kandungan yang mengandungi baris baharu, kami boleh menambah pengubah suai s pada corak ungkapan biasa:
$pattern = '/<p>(.*)</p>/s';
$string = '<p>This is a paragraph.</p>
           <p>This is another paragraph.</p>';
preg_match_all($pattern, $string, $matches);
var_dump($matches[1]);  // 输出两个段落的内容
Salin selepas log masuk

Ringkasan:
Melalui pengenalan artikel ini, anda telah mempelajari cara menggunakan ungkapan biasa untuk mengekstrak kandungan web dalam kaedah PHP. Ekspresi biasa ialah alat yang sangat berkuasa untuk mengekstrak maklumat yang anda perlukan dengan cekap. Saya harap kandungan ini dapat membantu anda membangunkan perangkak web dengan lebih baik.

Atas ialah kandungan terperinci Panduan Lanjutan phpSpider: Bagaimana untuk menggunakan ungkapan biasa untuk mengekstrak kandungan web?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan