2011-12-09 143 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