Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya boleh mengekstrak teks yang disertakan dalam kurungan segi empat sama dari rentetan menggunakan PHP?

Bagaimanakah saya boleh mengekstrak teks yang disertakan dalam kurungan segi empat sama dari rentetan menggunakan PHP?

Barbara Streisand
Barbara Streisandasal
2024-11-26 20:29:10703semak imbas

How Can I Extract Text Enclosed in Square Brackets from a String Using PHP?

Merakam Teks Dalam Kurungan Segi Empat dalam PHP

Dalam pengaturcaraan, kita sering menghadapi keperluan untuk mengekstrak data tertentu daripada rentetan yang lebih besar. Satu senario biasa ialah menangkap teks yang disertakan dalam kurungan segi empat sama, seperti yang dilihat dalam contoh yang disediakan:

[This] is a [test] string, [eat] my [shorts].

Matlamatnya adalah untuk menukar rentetan ini kepada tatasusunan:

[
  '[This]',
  '[test]',
  '[eat]',
  '[shorts]'
]

Sementara asas ungkapan biasa seperti /[.*?]/ mungkin kelihatan mencukupi, ia hanya menangkap contoh pertama kurungan segi empat sama. Untuk mencapai output yang diingini, kami memerlukan pendekatan yang diubah suai.

Penyelesaian Ungkapan Biasa:

Kita boleh menggunakan preg_match_all dengan ungkapan biasa yang diubah suai untuk memadankan semua kemunculan teks dalam kurungan segi empat sama. Kod berikut mencapai ini:

preg_match_all("/\[[^\]]*\]/", $text, $matches);
var_dump($matches[0]);

Kod ini menggunakan ungkapan biasa berikut:

  • /[/: Padan dengan kurungan segi empat sama pembukaan.
  • [^]]*: Padan dengan semua aksara kecuali petak penutup kurungan.
  • /]/: Padan dengan kurungan persegi penutup.

Kaedah Alternatif untuk Menanggalkan Kurungan:

Jika kita ingin mengekstrak teks tanpa kurungan, kita boleh mengubah suai ungkapan biasa sedikit:

preg_match_all("/\[([^\]]*)\]/", $text, $matches);
var_dump($matches[1]);

Kod ini menggunakan:

  • /[/: Padan dengan kurungan segi empat sama pembukaan.
  • ( [^]]*): Menangkap semua aksara kecuali petak penutup kurungan.
  • /]/: Padan dengan kurungan empat segi penutup.

Pilihan Ketiga Menggunakan Pengkuantiti "*":

Kaedah alternatif, walaupun lebih perlahan, adalah dengan menggunakan pengkuantiti "*" dan bukannya "[^]":

preg_match_all("/\[(.*?)\]/", $text, $matches);
var_dump($matches[1]);

Dengan menggunakan ungkapan biasa ini, kami boleh menangkap teks dengan berkesan dalam kurungan segi empat sama, memberikan kami output yang diingini yang diterangkan dalam pernyataan masalah awal.

Atas ialah kandungan terperinci Bagaimanakah saya boleh mengekstrak teks yang disertakan dalam kurungan segi empat sama dari rentetan menggunakan PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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