给出以下字符串:
ID始终是一个数字。我需要一个正则表达式,它总是给我通过PHP使用的数字,最好通过http://www.solmetra.com/scripts/regex/index.php演示。
答案 0 :(得分:1)
preg_match_all('/id="(\d+)"/', $data, $matches);
答案 1 :(得分:0)
试试这个:
/\[download.*?id=\"(\d+)\"/
函数调用:
preg_match_all('/\[download.*?id=\"(\d+)\"/', '{{your data}}', $arr, PREG_PATTERN_ORDER);
答案 2 :(得分:0)
假设您总是有一个id
字段并且它始终包含在引号("
)中,您可以尝试类似正则表达式的内容:id="(\d+)"
。这将捕获数字并将其放入一个组中。您可以查看here,了解如何访问这些群组。
有人建议,如果你想匹配更多字段,我建议你删除正则表达式并找到能够解析你传递的字符串的东西。
答案 3 :(得分:0)
这也是一个解决方案
\[download[^\]]*id="(\d*)
您在捕获第1组时找到了结果
\[download
匹配" [下载"
[^\]]*
是一个否定的角色类,匹配所有不是"]" (或多次)
id="
匹配" id =""字面上
(\d*)
是一个匹配0位或更多位数的抓取组,您可以将*
更改为+
以匹配一个或多个。
<子> What absolutely every Programmer should know about regular expressions 子>
答案 4 :(得分:0)
您可以轻松使用ini文件而不需要正则表达式,例如:
test.ini
[download]
id=1
attr = ""
[download2]
id=2
attr = "d2"
和index.php
$ini = parse_ini_file('test.ini', true);
print_r($ini);
答案 5 :(得分:0)
这是我的解决方案:
<?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);
?>
使用单行输入(读入 $ matches ['id'] [0] )或使用多行输入(如示例,迭代 $ matches [' 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"
}
}
因此,您可以阅读 $ matches ['id'] 数组循环的ID属性:)