2011-08-23 76 views
1

更新到我的问题: 我的目标是将字符串拆分为4个部分,以便稍后访问。Php/Regex获取一组双引号之间的内容

  1. =

这里的 ”第一和最后一个内部的HTML

  • 结果“ 是什么,我试图做一个例子:

    //我的字符串(这是动态的,会改变,这只是一个例子)

    $string = 'value="<p>Some text</p> <a href="#">linky</a>"'; 
    

    //运行了比赛,吐出的结果

    preg_match_all('/([^"]*)(?:\s*=\s*(\042|\047))([^"]*)/is', $string , $results); 
    

    //这里是我想

    Array 
    (
    [0] => Array 
        (
         [0] => value="<p>Some text</p><a href="#">linky</a>" 
        ) 
    
    [1] => Array 
        (
         [0] => value 
        ) 
    
    [2] => Array 
        (
         [0] => " 
        ) 
    
    [3] => Array 
        (
         [0] => <p>Some text</p><a href="#">linky</a> 
        ) 
    ) 
    

    基本上链路上的双引号结束了阵列造成我有些麻烦,所以我的第一个虽然是做[^“] $或东西,让它直到最后一个双引号运行,但是这并没有让我到任何地方。我的另一个想法是可能在PHP中处理字符串以去除任何内部引号,但我不确定要不要去做这件事。

    希望我很清楚,这是很晚了,我已经在这太久了!

  • +0

    你想做什么就做什么? – Rijk

    +0

    用更多信息更新了我的问题,谢谢! –

    +0

    继续之前,请阅读以下内容:http://www.codinghorror.com/blog/2009/11/parsing-html-the-cthulhu-way.html ;-) –

    回答

    0

    你不能这样做,因为您不知道如何引用哪个引号来匹配字符串的末尾,以及应该包含哪些引号(特别是当值的引号数量可变时,以及字符串中的多个匹配字符时)。无论如何,引号中有引号吗?这些数据来自哪里?

    $string = 'value="<p>Some text</p> <a href="#">linky</a>"'; 
    

    对我来说这似乎很奇怪。

    +0

    是的,我没有直接思考。除非它们被转义,否则你不应该在其他双引号内引入双引号。我将不得不重新考虑这一点。 –

    0

    如果你不打扰改变你的HTML一点点,你可以试试这个:

    $string = 'value="<p>Some text</p> <a href=\'#\'>linky</a>"'; 
    
    +0

    不幸的是,html进来是动态的,所以我没有控制内部报价。 –

    0

    在这种情况下,你可以使用:

    $string = 'value="<p>Some text</p> <a href="#">linky</a>"'; 
    echo substr($string, 7, -1); //<p>Some texts</p> <a href="#">linky</a> 
    
    +0

    我对substr不太熟悉,但它看起来只适用于这个例子。让我更新我的问题,说明进入的字符串是动态的,可以改变! –

    +0

    这将适用于类似的例子,当字符串以«value =“»开头并以«”»结尾时。也就是说,第一个和最后一个报价之间可以是任何字符。 – B7ackAnge7z

    0

    试试这个正则表达式

    $string = 'value="<p>Some text</p> <a href="#">linky</a>"'; 
    $regex = '/([^"]*)(?:\s*=\s*(?:\042|\047))(.*)(?:\042|\047)(?:[^"]*)/is'; 
    preg_match_all($regex, $string , $results); 
    

    它提供了以下结果。

    Array(3) { 
        [0]=> 
        Array(1) { 
        [0]=> 
        string(46) "value="<p>Some text</p> <a href="#">linky</a>"" 
        } 
        [1]=> 
        Array(1) { 
        [0]=> 
        string(5) "value" 
        } 
        [2]=> 
        Array(1) { 
        [0]=> 
        string(38) "<p>Some text</p> <a href="#">linky</a>" 
        } 
    } 
    

    真诚