二重引用符または単一引用符を含む文字列があります。私がする必要があるのは、引用の間にすべてをエコーすることです:
$str = "'abc de', xye, jhy, jjou";
$str2 = "\"abc de\", xye, jhy, jjou";
正規表現 (preg_match) やその他の php 組み込み関数を使用してもかまいません。
ご意見をお聞かせください。
よろしく、
$str = "'abc de', xye, \"jhy\", blah blah 'bob' \"gfofgok\", jjou";
preg_match_all('/".*?"|\'.*?\'/', $str, $matches);
print_r($matches);
これは以下を返します:
Array (
[0] => Array (
[0] => 'abc de'
[1] => "jhy"
[2] => 'bob'
[3] => "gfofgok"
)
)
正規表現の説明:
" -> Match a double quote
.* -> Match zero or more of any character
?" -> Match as a non-greedy match until the next double quote
| -> or
\' -> Match a single quote
.* -> Match zero or more of any character
?\' -> Match as non-greedy match until the next single quote.
一重引用符または二重引用符$matches[0]
内に存在するすべての文字列を含む配列も同様です。
正規表現は、最初は怖く見えてもそれほど複雑ではありません。チュートリアルまたはドキュメントを参照すると、多くのことが明確になります。
あなたの問題に応じて、これを見て、使用する前に理解してください
$str = "'abc de', xye, jhy, jjou";
$str2 = "\"abc de\", xye, jhy, jjou";
$match = $match2 = array();
preg_match("/'(.+)'/", $str, $match);
preg_match("/\"(.+)\"/", $str2, $match2);
print_r($match);
print_r($match2);
この状況では、explode組み込み関数を使用できます。
function getBetween($string){
//explode the string
$exploded=explode("'",$string);
//print using foreach loop or in any way you want
foreach($exploded as $explode){
echo $explode.'<br/>';
}
}