我在从数据库中提取的文本中有这些标记 [ATTACH = CONFIG] 9 [/ ATTACH]我试图在这种情况下提取数字9。
我的第一次尝试
$images = preg_match_all(#\[ATTACH.*?\[/ATTACH\]#si, $article['pagetext'], $images['matches']);
$image = $images['matches'][1][0];
没有返回任何东西。
有人可以帮我正确使用正则表达式吗?谢谢。
答案 0 :(得分:0)
这个正则表达式
#([0-9]+)#
会更好。
结果将在$images['matches'][1]
。
如果您只需要ATTACH
标记内的数字:
#\[ATTACH[^]]*]([0-9]+)\[/ATTACH]#
答案 1 :(得分:0)
我用php5.4.5测试了以下代码:
<?php
$article = array();
$article['pagetext'] = '[ATTACH=CONFIG]9[/ATTACH][ATTACH=CONFIG]10[/ATTACH]';
$images = array();
$images['matches'] = array();
if(preg_match_all('/[ATTACH[^\]]*\](\d+)\[\/ATTACH\]/i', $article['pagetext'], $images['matches']) > 0){
# will print out "9", "10"
for($i = 0; $i < count($images['matches'][1]); ++$i)
printf("%s\n", $images['matches'][1][$i]);
}
?>