在PHPexplode 中將引用的單字視為單字
我們如何使用explode()分解字串,如下所示將引用字串的文字保留為單字?
Lorem ipsum "dolor sit amet" consectetur "adipiscing elit" dolor
預期輸出:
["Lorem", "ipsum", "dolor sit amet", "consectetur", "adipiscing elit", "dolor"]
儘管嘗試使用以下程式碼,目前實作仍對字串中的每個單字進行分段:
$mytext = "Lorem ipsum %22dolor sit amet%22 consectetur %22adipiscing elit%22 dolor" $noquotes = str_replace("%22", "", $mytext"); $newarray = explode(" ", $noquotes);
解:
為了準確地將引用的單字捕獲為單一實體,我們可以利用preg_match_all():
$text = 'Lorem ipsum "dolor sit amet" consectetur "adipiscing \"elit" dolor'; preg_match_all('/"(?:\\.|[^\\"])*"|\S+/', $text, $matches); print_r($matches);
這種精煉的語法甚至可以處理帶引號的短語中的轉義引號。
正規表示式細分:
"(?: # 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
處理「而不是Double引號:
如果需要處理"取代雙引號,請使用此調整後的正規表示式:
preg_match_all('/%22(?:\\.|(?!%22).)*%22|\S+/', $text, $matches);
以上是使用PHP的explode()時如何將引用的文字保留為單字?的詳細內容。更多資訊請關注PHP中文網其他相關文章!