[英]Php/Regex get the contents between a set of double quotes
更新至我的問題:我的總體目標是將字符串分成4部分,以后可以訪問。
這是我要執行的操作的一個示例:
//我的字符串(這是動態的,並且會發生變化,這只是一個示例)
$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中處理字符串以去除任何內部引號,但是我不確定該如何去做。
希望我很清楚,已經很晚了,而且我已經走了太久了!
試試這個正則表達式
$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>"
}
}
真誠的
如果您不花一點時間更改html,可以嘗試以下操作:
$string = 'value="<p>Some text</p> <a href=\'#\'>linky</a>"';
在這種情況下,您可以使用:
$string = 'value="<p>Some text</p> <a href="#">linky</a>"';
echo substr( $string, 7, -1 ); //<p>Some texts</p> <a href="#">linky</a>
您無法執行此操作,因為您不知道哪個引號標記要匹配的字符串的末尾以及應該包括哪個引號(尤其是當值中的引號數量可變且字符串中的匹配項超過1個時)。 無論如何,報價中為什么會有報價? 這些數據從何而來?
$string = 'value="<p>Some text</p> <a href="#">linky</a>"';
對我來說似乎很奇怪。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.