我抓取的内容如下(其中的一个例子):<ul>
    <li>批准文号:Q/LD0001S-2013</li>
    <li>生产企业:毫州灵丹中药饮片有限公司</li>
    <li>厂址:毫州灵丹中药饮片有限公司</li>
    <li>配料表:山楂粉</li>
    <li>储藏方法:置阴凉干燥处,防潮,防蛀</li>
    <li>保质期:24个月</li>
    <li>食品添加剂:无</li>
    <li>包装方式: 包装</li>
    <li>系列:山东特选</li>
    <li>规格: 120g/罐</li>
    <li>省份:山东</li>
    <li>是否为有机食品: 否</li>
    <li>特产品类: 山东山楂粉</li>
    <li>适用对象: 全部适用</li>
</ul>但是我现在只需要:<ul>
<li>批准文号:</li>
<li>生产企业:</li>
<li>名称:</li>
</ul>“名称”是上面没有的,但是也要判断是否存在"名称",这个例子的实际结果:<ul>
<li>批准文号:</li>
<li>生产企业:</li>
</ul>

解决方案 »

  1.   

    '/<li>(批准文号:|生产企业:|名称:)/i'提取出来组装一下是了
      

  2.   

    $zz="/(<li>批准文号.*<\/li>)|(<li>生产企业.*<\/li>)|(<li>名称.*<\/li>)/";

    preg_match_all($zz, $str, $matches);
    print_r($matches);
      

  3.   


    $str = '<ul>
        <li>批准文号:Q/LD0001S-2013</li>
        <li>生产企业:毫州灵丹中药饮片有限公司</li>
        <li>厂址:毫州灵丹中药饮片有限公司</li>
        <li>配料表:山楂粉</li>
        <li>储藏方法:置阴凉干燥处,防潮,防蛀</li>
        <li>保质期:24个月</li>
        <li>食品添加剂:无</li>
        <li>包装方式: 包装</li>
        <li>系列:山东特选</li>
        <li>规格: 120g/罐</li>
        <li>省份:山东</li>
        <li>是否为有机食品: 否</li>
        <li>特产品类: 山东山楂粉</li>
        <li>适用对象: 全部适用</li>
        <li>名称:123</li>
    </ul>';preg_match_all('/<li>(批准文号:|生产企业:|名称:)/i', $str, $matches);
    $data = $matches[1];
    $tmp = '<ul>';
    foreach($data as $k=>$v){
    $tmp .= '<li>'.$v.'</li>';
    }
    $tmp .= '</ul>';echo $tmp;<ul>
    <li>批准文号:</li>
    <li>生产企业:</li>
    <li>名称:</li>
    </ul>