CSSセレクタの分割用コードを書いており、文字列を,
で区切る処理を書いています。
通常、ある文字で文字列を分割する場合、explode
を使った以下の方法となります。
lang
1$selectors = explode(',', $selector);
しかしこの方法を採用した場合、,
で無差別に分割されるため、E[data-comma="a,b"]
などのセレクタに対応出来なくなります。
Array
(
[0] => E[data-comma="a
[1] => b"]
)
求める処理は、引用符で囲まれていない文字,
で文字列を分割する方法についてです。
そのような方法はあるのでしょうか?
処理コードの参考までに、引用符に囲まれた文字列にマッチする正規表現を置いていきます。
(引用符内でのエスケープ対応)
パターンにミスがあったため、以前のものから修正しています
"(?:[^"\]|\["\])+"|'(?:[^'\]|\['\])+'
lang
1preg_match_all('/"((?:[^"\\]|\\["\\])++)"|\'((?:[^\'\\]|\\[\'\\])++)\'/',$selector,$matches); 2 3// ダブルクォーテーションで囲まれた文字列の配列 4$q_strs =isset($matches[1]) ? $matches[1] : array(); 5// シングルクォーテーションで囲まれた文字列の配列 6$ap_strs=isset($matches[2]) ? $matches[2] : array();
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。