Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Mengekalkan Teks Dipetik sebagai Perkataan Tunggal Apabila Menggunakan PHP's explode()?

Bagaimana untuk Mengekalkan Teks Dipetik sebagai Perkataan Tunggal Apabila Menggunakan PHP's explode()?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-07 13:01:12489semak imbas

How to Preserve Quoted Text as Single Words When Using PHP's explode()?

Merawat Perkataan Dipetik sebagai Perkataan Tunggal dalam PHP meletup

Bagaimanakah kita boleh memecahkan rentetan, seperti yang dilihat di bawah, menggunakan explode() manakala mengekalkan teks yang dipetik sebagai perkataan tunggal?

Lorem ipsum "dolor sit amet" consectetur "adipiscing elit" dolor

Dijangka Output:

["Lorem", "ipsum", "dolor sit amet", "consectetur", "adipiscing elit", "dolor"]

Walaupun percubaan menggunakan kod berikut, pelaksanaan semasa membahagikan setiap perkataan dalam rentetan:

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

Penyelesaian:

Untuk menangkap perkataan yang dipetik dengan tepat sebagai entiti tunggal, kami boleh memanfaatkan preg_match_all():

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

Sintaks yang diperhalusi ini mengendalikan walaupun petikan yang terlepas dalam frasa yang dipetik.

Pecahan Regex:

"(?:         # Start non-capture group 1
  \        #   Match backslash character
  .         #   Match any character except line breaks
  |         #   Or
  [^\"]    #   Match any character except backslash and double quotes
)*          # End non-capture group 1 and repeat it zero or more times
"           # Match double quotes
|           # Or
\S+         # Match one or more non-whitespace characters

Mengendalikan " Daripada Berganda Petikan:

Sekiranya timbul keperluan untuk menangani " sebagai ganti petikan berganda, gunakan regex terlaras ini:

preg_match_all('/%22(?:\\.|(?!%22).)*%22|\S+/', $text, $matches);

Atas ialah kandungan terperinci Bagaimana untuk Mengekalkan Teks Dipetik sebagai Perkataan Tunggal Apabila Menggunakan PHP's explode()?. 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