-4

二重引用符または単一引用符を含む文字列があります。私がする必要があるのは、引用の間にすべてをエコーすることです:

 $str = "'abc de', xye, jhy, jjou";
 $str2 = "\"abc de\", xye, jhy, jjou";

正規表現 (preg_match) やその他の php 組み込み関数を使用してもかまいません。

ご意見をお聞かせください。

よろしく、

4

3 に答える 3

7

使用preg_match_all:

$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]内に存在するすべての文字列を含む配列も同様です。

于 2013-04-02T20:51:16.883 に答える
1

正規表現は、最初は怖く見えてもそれほど複雑ではありません。チュートリアルまたはドキュメントを参照すると、多くのことが明確になります。

あなたの問題に応じて、これを見て、使用する前に理解してください

 $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);
于 2013-04-02T20:46:58.553 に答える
0

この状況では、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/>';
    } 
}
于 2013-04-02T20:46:11.633 に答える