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!