2011-08-23 82 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>" 
        } 
    } 
    

    真誠