我有一个包含双引号或单引号的字符串。我需要做的是在引用之间回显所有内容:
$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/>';
}
}