【问题标题】:preg_split commas not inside parenthesispreg_split 逗号不在括号内
【发布时间】:2009-12-31 22:29:30
【问题描述】:

测试字符串:

Organic whole wheat bread, Monterey Jack Cheese (milk, cheese culture, salt), Hormel Natural Ham (salt, turbinado sugar, lactic acid (not from milk)

期望的输出:

Array ( 
        [0] => Organic whole wheat bread 
        [1] => Monterey Jack Cheese
        [2] => Hormel Natural Ham
      )

我不介意子成分是否与原始项目一起出现(即“蒙特利杰克奶酪(牛奶、奶酪文化、盐)”),我只是不希望它们单独出现,因为它们不是t 添加成分。

我在这里发现了几个其他问题,我尝试将其应用于我的问题,但我从未得到预期的输出。

哦,如果 preg_split 不是以 PHP 为中心,我正在使用 PHP。

提前致谢!

【问题讨论】:

    标签: php regex csv preg-split


    【解决方案1】:

    我将首先删除所有括号及其内容:

    $result = preg_replace('/\s*\([^()]+\)/', '', $subject);
    

    然后在剩余的逗号上输入preg_split()。这假定括号没有嵌套。

    如果括号可以嵌套,那么您需要运行它的次数与嵌套层数一样多。每次都会删除最里面的括号。

    【讨论】:

    • 代码:$ingredients = explode(',',preg_replace('/\s*([^()]+)/', '', $list));这是我得到的输出:数组([0] => 有机全麦面包 [1] => 蒙特利杰克奶酪 [2] => 荷美尔天然火腿(盐 [3] => 鼻甲糖 [4] =>乳酸)它只是替换第一个。
    • preg_replace_all 不存在。你是在建议我使用 preg_match_all 吗? preg_replace 应该替换所有匹配项,这就是我感到困惑的原因。
    • 双括号是问题所在。谢谢你,新年快乐。
    猜你喜欢
    • 2011-05-31
    • 2010-11-24
    • 2018-05-02
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 2015-07-24
    • 1970-01-01
    相关资源
    最近更新 更多