Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Memisahkan Rentetan kepada Perkataan Semasa Memelihara Frasa Petikan?

Bagaimana untuk Memisahkan Rentetan kepada Perkataan Semasa Memelihara Frasa Petikan?

Susan Sarandon
Susan Sarandonasal
2024-12-06 02:59:171010semak imbas

How to Split a String into Words While Preserving Quoted Phrases?

Cara Memisahkan Rentetan dengan Perkataan, Memelihara Teks Petikan

Untuk rentetan yang diberi "Lorem ipsum "dolor sit amet" consectetur "adipiscing elit " dolor," kami mencari kaedah untuk meletupkannya ke dalam tatasusunan, mengekalkan integriti frasa yang dipetik. Menggunakan kod yang disediakan:

$mytext = "Lorem ipsum %22dolor sit amet%22 consectetur %22adipiscing elit%22 dolor"
$noquotes = str_replace("%22", "", $mytext");
$newarray = explode(" ", $noquotes);

mengakibatkan perkataan individu terpecah. Untuk menangani perkara ini, kami memanfaatkan ungkapan biasa:

$text = 'Lorem ipsum "dolor sit amet" consectetur "adipiscing \"elit" dolor';
preg_match_all('/"(?:\\.|[^\\"])*"|\S+/', $text, $matches);

regeks ini sepadan sama ada rentetan yang dipetik atau aksara bukan ruang putih. Rentetan yang dipetik boleh mengandungi petikan berganda (") yang dilepaskan, dan teknik ini menyesuaikannya. Hasilnya:

Array
(
    [0] => Array
        (
            [0] => Lorem
            [1] => ipsum
            [2] => "dolor sit amet"
            [3] => consectetur
            [4] => "adipiscing \"elit"
            [5] => dolor
        )

)

Penjelasan:

Reeks boleh dipecahkan kepada komponennya:

  • `" # Padan dengan aksara petikan berganda ("
  • (?: # Mulakan bukan tangkap kumpulan 1
  • # Padan dengan aksara sengkang ke belakang ()
  • . # Padankan mana-mana watak kecuali pemisah baris
  • |. # ATAU
  • 1 # Padan dengan mana-mana aksara kecuali dan "
  • )* # Tamatkan kumpulan bukan tangkap 1 dan ulangi sifar atau lebih kali
  • " # Padan dengan aksara petikan berganda ("
  • | # ATAU
  • S # Padan dengan satu atau lebih bukan ruang putih watak

  1. "

Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Rentetan kepada Perkataan Semasa Memelihara Frasa Petikan?. 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