正则表达式清洁结果

时间:2016-07-01 00:00:18

标签: php regex

我试图用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"
}

感谢您的帮助。

2 个答案:

答案 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);

显然,这种方法不会检查每个项目是否完全包含在相同类型的引号之间,但这是否真的有必要?