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

Barbara Streisand
Lepaskan: 2024-11-26 20:29:10
asal
702 orang telah melayarinya

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].
Salin selepas log masuk

Matlamatnya adalah untuk menukar rentetan ini kepada tatasusunan:

[
  '[This]',
  '[test]',
  '[eat]',
  '[shorts]'
]
Salin selepas log masuk

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]);
Salin selepas log masuk

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]);
Salin selepas log masuk

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]);
Salin selepas log masuk

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!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan