2011-12-09 114 views
-1

你好我发现了以下错误PHP错误注意:未定义偏移

Notice: Undefined offset: 1 in file.php on line 113 

线113是$ publish_content = $ matches2 [1];

这是我的代码

if(!preg_match('/\<content\:encoded\>(?:\<\!\[CDATA\[)?(.*?)(?:\]\]\>)?\<\/content\:encoded\>/si',$item,$matches2)){ 
     for($i2=0;$i2<count($info_tag_pairs);$i2++){ 
      if(preg_match('/'.custom_preg_quote($info_tag_pairs[$i2][0]).'(.*?)'.custom_preg_quote($info_tag_pairs[$i2][1]).'/si',$item,$matches2)){ 
       break; 
      } 
     } 
    } 

    $publish_content=$matches2[1]; 
    $publish_content=strip_tags($publish_content); 
    $publish_content=preg_replace('/'.arrayToString($rkws,'|','custom_preg_quote').'/si','',$publish_content); 
    $publish_content=trim($publish_content); 
    //echo $item; 
    if(!preg_match_all('/\<category\>(?:\<\!\[CDATA\[)?(.*?)(?:\]\]\>)?\<\/category\>/si',$item,$matches2)){ 
     for($i2=0;$i2<count($category_tag_pairs);$i2++){ 
      if(preg_match_all('/'.custom_preg_quote($category_tag_pairs[$i2][0]).'(.*?)'.custom_preg_quote($category_tag_pairs[$i2][1]).'/si',$item,$matches2)){ 
       break; 
      } 
     } 
    } 
+1

**哪里是LINE 113?** – ajreal

+0

变量的内容是什么? – Alex

+1

您可能会更好地更改代码以使用真正的XML解析器,而不是用不友好的正则表达式来对抗。 – Boann

回答

0

避免php引发的这些通知的一种方法是测试如果在对值做任何事情之前设置了该值。

<?php 

if (isset($matches2[1])) { 
    // do what you need with $matches2[1] 
    // ... 
} 

// or 

if (! isset($matches2[1])) { 
    // here you are sure $matches2[1] doesn't exist 
    return; 
} 
0

这意味着你的数组变量$matches1犯规包含关键1。由于您正在访问$matches2[1],因此$matches2为空或为空或者只有一个值,$matches2[1]是无效的偏移量。

如果您的preg_match实际符合您的$item,就会发生这种情况。

+0

如何解决这个问题?任何一行代替? –

+0

@MSona:我们不能告诉你,因为我们不知道这段代码应该做什么。但是最上面的if语句和循环在某种程度上显然是错误的,因为它们允许执行到达第113行,而不需要'$ matches2'被初始化。 – Boann