我试图用PHP提取这个字符串中的单词:
$string= '\'banana\', "orange", "apple"';
使用此模式:
/([\'"])(.*?)\1/
但它给了我这个结果:
array(3) {
[0] array(3) {
[0] "'banana'"
[1] ""orange""
[2] ""apple""
}
[1] array(3) {
[0] "'"
[1] ""
[2] ""
}
[2] array(3) {
[0] "banana"
[1] "orange"
[2] "apple"
}
}
这是一种我可以清理它的方式:
array(3) {
[0] "banana"
[1] "orange"
[2] "apple"
}
感谢您的帮助。
答案 0 :(得分:1)
使用正则表达式,您只需使用\w
匹配器提取单词字符。
把它与全球旗帜放在一起,我相信你会得到你想要的东西:)
请参阅this example
答案 1 :(得分:0)
使用preg_split
并描述您要删除的所有内容以及要剪切字符串的位置,然后添加标记PREG_SPLIT_NO_EMPTY
以过滤空白部分。
$subject = '\'banana\', "orange", "apple"';
$pattern = '~["\'](?:,\s*["\']|\z)|\A["\']~';
$result = preg_split($pattern, $subject, -1, PREG_SPLIT_NO_EMPTY);
print_r($result);
显然,这种方法不会检查每个项目是否完全包含在相同类型的引号之间,但这是否真的有必要?