我正在开发一个需要youtube api的应用程序。
我被困在需要YouTube频道关键字的地步。我正在一个字符串中获取所有关键字。
$string = 'php java "john smith" plugins';
我正在尝试在数组中获取上述关键字。我可以使用explode(' ',$string)
但问题是john smith
本身就是一个关键字。我希望我的数组是这样的:
array(
[0] => 'php',
[1] => 'java',
[2] => 'john smith',
[3] => 'plugins'
)
有什么快速/肮脏的解决方案可以实现这一目标吗?
str_getcsv()
会处理它,只需给它一个空格作为分隔符。
例:
$string = 'php java "john smith" plugins';
$array = str_getcsv($string, ' ');
var_export($array);
输出:
array (
0 => 'php',
1 => 'java',
2 => 'john smith',
3 => 'plugins',
)
可以尝试使用 preg_replace()
替换所有内部双引号。在执行之前,它使用 preg_match_all()
获取另一个数组中的所有带引号的字符串。终于array_merge()
$string = 'php java "john smith" plugins';
$pattern = '/"(.*?)"/';
preg_match_all($pattern, $string, $quotes_str);
$string = preg_replace($pattern, '', $string);
$arr = array_filter(explode(' ', $string));
$arr = array_merge($arr, $quotes_str[1]);
或者可以使用str_getcsv()
.
$arr = str_getcsv($string, ' ');
print '<pre>';
print_r($arr);
print '</pre>';