-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 回答