0

我有一个字符串:

$text =array();
$text[0] = "Microsoft Windows Phone 7.5 Mango";
$text[1] = "Microsoft Windows Phone 7";


for($i=0; $i<2; $i++){
    preg_match_all('/(Microsoft Windows)<\/i>\s*(.*)/', $text[$i], $value) ;
    print_r($value);
}

当我 print_r($value) 的结果是 array() array(),如何解决它?

4

2 回答 2

4

删除<\/i>没有出现在输入字符串中的结束 HTML 标记。

于 2012-06-12T04:38:56.340 回答
0

你可以像@Sarke 提到的那样做并删除<\/i>. 但是如果这段代码可能需要解析包含这个标签的字符串,那么让你的表达式忽略它:

preg_match_all('/(Microsoft Windows)(<\/i>)?\s*(.*)/', $text[$i], $value) ;

另外,我建议不要硬编码数组的长度,而是使用count(),如下所示:

for($i=0; $i<count($text); $i++) {

这样,如果/当您的$text数组中的项目数量发生变化时,您的代码将更具前瞻性。

于 2012-06-12T04:48:13.230 回答