使用嵌入引號分解字串
在處理引號內的文字時,使用標準explode() 函數分解字串可能會出現問題。為了達到將引用的單字視為單一實體的預期結果,需要更複雜的方法。
使用正規表示式
正規表示式為此任務提供了強大的解決方案。以下正規表示式符合帶引號的字串,允許轉義引號:
"(?:\.|[^\"])*"|\S+
此模式可與preg_match_all() 一起使用,從字串中提取帶引號和不帶引號的單字:
$text = 'Lorem ipsum "dolor sit amet" consectetur "adipiscing \"elit" dolor'; preg_match_all('/"(?:\.|[^\"])*"|\S+/', $text, $matches);
結果陣列將包含所需的輸出:
Array ( [0] => Array ( [0] => Lorem [1] => ipsum [2] => "dolor sit amet" [3] => consectetur [4] => "adipiscing \"elit" [5] => dolor ) )
解釋
正規表示式模式由兩部分組成:
非捕獲組 (?:...) 確保轉義引號不會被捕獲為單獨的匹配項。
處理百分比編碼引號
如果您的字串包含百分比編碼的引號而不是雙引號,請將正規表示式修改為:
%22(?:\.|(?!%22).)*%22|\S+
以上是如何分解帶有嵌入引號(包括轉義引號和百分比編碼引號)的字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!