考慮下面的字符串:正則表達式的正則表達式ID
- [下載ID = 「1」]
- [下載ID = 「1」 ATTR = 「」]
- [下載ATTR = 「」 ID = 「1」]
- [下載ATTR = 「」 ID = 「1」 ATTR = 「」]
ID始終是一個數。我需要一個正則表達式,總是會給我通過PHP使用的數字,最好通過http://www.solmetra.com/scripts/regex/index.php進行演示。
考慮下面的字符串:正則表達式的正則表達式ID
ID始終是一個數。我需要一個正則表達式,總是會給我通過PHP使用的數字,最好通過http://www.solmetra.com/scripts/regex/index.php進行演示。
試試這個:
/\[download.*?id=\"(\d+)\"/
函數調用:
preg_match_all('/\[download.*?id=\"(\d+)\"/', '{{your data}}', $arr, PREG_PATTERN_ORDER);
preg_match_all('/id="(\d+)"/', $data, $matches);
假設你將永遠有一個id
的領域,而且它總是引號括起來("
)你可以嘗試像這樣的正則表達式:id="(\d+)"
。這將捕獲該數字並將其放入一個組中。你可以看看here看看你如何才能訪問這些組。
正如有人建議,如果你想匹配更多的領域,我會建議你刪除正則表達式,並找到能夠解析你傳遞的字符串的東西。
這也將是一個解決方案
\[download[^\]]*id="(\d*)
您在拍攝集體找到你的結果1
\[download
匹配 「[下載」
[^\]]*
是否定字符類,匹配不是「]」(o或更多次)的所有內容
id="
匹配「ID =」」的字面
(\d*)
是匹配0或多個數字捕獲組,則可以更改*
到+
匹配的一個或多個。
What absolutely every Programmer should know about regular expressions
,你可以很容易地使用INI文件,並在需要的不是正則表達式,例如:
test.ini
[download]
id=1
attr = ""
[download2]
id=2
attr = "d2"
和索引。PHP
$ini = parse_ini_file('test.ini', true);
print_r($ini);
這是一個非常奇怪的答案。爲什麼你認爲OP在格式上有任何選擇?即使如此 - ini?!我倒是覺得有更好的選擇,現在天... – Kobi
我只是想記住這樣.. –
這是我的解決方案:
<?php
$content =
<<<TEST
[download id="1"]
[download id="2" attr=""]
[download attr="" id="3"]
[download attr="" id="4" attr=""]
TEST;
$pattern = '/\[download.*[ ]+id="(?P<id>[0-9]+)".*\]/u';
if (preg_match_all($pattern, $content, $matches))
var_dump($matches);
?>
作品與單個線路輸入(在$比賽讀[ 'ID'] [0])或具有多行輸入(如的示例中,迭代上$比賽[ 'ID']數組)。
注:
http://it.php.net/manual/en/function.preg-match-all.php
http://it.php.net/manual/en/reference.pcre.pattern.modifiers.php
上面的示例將輸出此:
array(3) {
[0]=>
array(4) {
[0]=>
string(17) "[download id="1"]"
[1]=>
string(25) "[download id="2" attr=""]"
[2]=>
string(25) "[download attr="" id="3"]"
[3]=>
string(33) "[download attr="" id="4" attr=""]"
}
["id"]=>
array(4) {
[0]=>
string(1) "1"
[1]=>
string(1) "2"
[2]=>
string(1) "3"
[3]=>
string(1) "4"
}
[1]=>
array(4) {
[0]=>
string(1) "1"
[1]=>
string(1) "2"
[2]=>
string(1) "3"
[3]=>
string(1) "4"
}
}
所以,可以讀出的ID屬性上$循環比賽[ 'ID']陣列:)
普通expressi ons不是解析器。 –
這是整個字符串,或者是一個更大的字符串的一部分?你能舉一個更完整的例子嗎? – Kobi
爲什麼要求一個正則表達式?詢問你面臨的問題,即提取「id」屬性的值。不要求特定的解決方案機制。 [X-Y問題】(http://meta.stackexchange.com/a/66378) –