2011-07-12 84 views
1

我从来没有理解过正则表达式的模式,并且在Google搜索之后,我一直没有任何明智之举。拆分字符串PHP

我想从这个字符串抢WordPress版本号(3.2):

<meta name="generator" content="WordPress 3.2" /> 

在未来升级到3.3的时候我wan't拆分代码要能得到那个。所以没有静态表达。

我该如何解决这个问题?

+2

正确的方法是使用[HTML解析器](http://stackoverflow.com/questions/3577641/best-methods-to-parse-html-with-php/3577662#3577662),即使它可能看起来像是矫枉过正 –

+0

这可能是矫枉过正,但从长远来看,它会更加可靠。如果WP更改空白或你有什么,那么正则表达式可能会中断。 – Anthony

回答

2

这里是一个正则表达式,为了这个工程...

$str = '<meta name="generator" content="WordPress 3.2" />'; 
preg_match('/meta name="generator" content="WordPress [0-9]+\.[0-9]" /', $str, $matches); 
preg_match('/[0-9]+\.[0-9]/', $matches[0], $matches1); 
$version = $matches1[0]; 
echo "Wordpress version is = $version"; 

应该输出这样的:

的WordPress版本= 3.2

+0

非常感谢,工作出色! – Fredrik

+0

非常欢迎。 – pthurmond

0
$data = '<meta name="generator" content="WordPress 3.2" />'; 
$pat = '<meta name="generator" content="WordPress (\d*\.?\d*)" />'; 
if(($match = preg_match($pat, $data)) !== false){ 
    echo $match[1]; 
}else{ 
    echo "not found"; 
} 
0
preg_match('|<meta name="generator" content="WordPress (.*?)" />|', $where_to_search_for, $match); 
print_r($match); 
0

虽然这是一个很老的问题,并且出于好奇,为什么不使用内置函数来撤销正在使用的WordPress版本?

<?php echo get_bloginfo('version');?> 

这样,即使发电机元被删除,你会从$wp_version VAR得到确切的版本。