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
Lepaskan: 2024-12-07 13:01:12
asal
432 orang telah melayarinya

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

Dijangka Output:

["Lorem", "ipsum", "dolor sit amet", "consectetur", "adipiscing elit", "dolor"]
Salin selepas log masuk

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

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

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

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

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!

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