2010-12-31 27 views
10

Ecco l'errore:Come si risolve un errore di delimitazione "strpos()" vuoto?

Per: PHP 5.2+

Warning: strpos() [function.strpos]: Empty delimiter in /helper.php on line 445

e qui è il codice su quella linea:

if($src = $img->getAttribute('src') AND strpos($src,$fgParams->get('base')) === false) { // prevents repeat processing 
      EgivaUtility::profiling('Processing Image SRC: '.$src); 
      // fix rel paths 
      $src = EgivaUtility::encode_url(EgivaUtility::makeAbsUrl($origLink,$src)); 
      if($image_details = @getimagesize($src) AND !in_array($image_details[0],array(1,2)) AND !in_array($image_details[1],array(1,2))) { 
       EgivaUtility::profiling('Image Details: '.print_r($image_details,true)); 
       $title = $img->getAttribute('title'); 
       $alt = $img->getAttribute('alt'); 
       if($fgParams->get('save_img')) { // consider restoring the JPath::clean() 
        // find image name and extension 
        $name = $title ? EgivaUtility::stringURLSafe($title) : EgivaUtility::stringURLSafe($alt); 
        preg_match('#[/?&]([^/?&]*)(\.jpg|\.jpeg|\.gif|\.png)#i',$src,$matches); 
        $ext = isset($matches[2]) ? strtolower($matches[2]) : ''; 
        if(!$name) $name = isset($matches[1]) ? EgivaUtility::stringURLSafe($matches[1]) : md5($src); 
        unset($matches); 
        //create image file  
        $filename = $fgParams->get('name_prefix').$name.$ext; 
        $filepath = $fgParams->get('savepath').'images'.DS.$filename; 
        if(!file_exists($filepath)) { 
         if($contents = EgivaUtility::getUrl($src,$fgParams->get('scrape_type'),'images',$filepath)) { 
          $saved = true; 
          //if(EgivaUtility::savefile($contents,$name,$update=false,$header=null,$fgParams->get('savepath').'images')) $saved = true; 
         } 
        } else { 
         $saved = true; 
        } 
        if($saved) $img->setAttribute('src', $fgParams->get('srcpath').'images/'.$filename); 
       } else { 
        $img->setAttribute('src',$src); 
       } 
       EgivaUtility::profiling('Final Image SRC: '.$img->getAttribute('src')); 
      // $class = $img->getAttribute('class'); 
      // $width = $img->getAttribute('width'); 
      // $height = $img->getAttribute('height'); 
       if(strlen($alt) >= JString::strlen($content['title']) OR !$alt) { 
        $img->setAttribute('alt',$content['title']); 
       } 
       if($fgParams->get('rmv_img_style')) { 
        $img->removeAttribute('class'); 
        $img->removeAttribute('style'); 
        $img->removeAttribute('align'); 
        $img->removeAttribute('border'); 
        $img->removeAttribute('width'); 
        $img->removeAttribute('height'); 
       } 
       if($fgParams->get('img_class')) { 
        $img->setAttribute('class',$fgParams->get('img_class')); 
       } 
       $new_img = $dom2->importNode($imgs->item($k),true); 
       $dom2->appendChild($new_img); 
       $images[$k] = $dom2->saveHTML(); 
       $dom2->removeChild($new_img); 

       // hack to avoid encoding problems 
       $text = preg_replace($regex,'fg_img'.$k,$text,$limit=1); 
       $replace[$k] = 'fg_img'.$k; 
       $k++; 
      } else { 
       EgivaUtility::profiling('Image Rejected'); 
       $text = preg_replace($regex,'',$text,1); 
      } 
     } 
    } 
+0

quale linea è la linea 445? –

+0

Mi dispiace - la riga 445 è la prima riga del codice I (sopra) - cioè se ($ src = $ img-> getAttribute ('src') AND strpos ($ src, $ fgParams-> get ('base')) === false) { – Jamison

+0

Si prega di controllare il file helper.php e controllare il numero di riga 445. Facci sapere che cosa esattamente sul numero di linea 445. –

risposta

33

Questo errore si verifica quando il secondo parametro da strpos è vuoto. Per esempio, posso facilmente simulare questo errore nella riga di comando:

$ php 
<?php 
echo strpos("foo", ""); 
?> 
^D 
Warning: strpos(): Empty delimiter in - on line 2 

Nel codice, significa che $fgParams->get('base') è vuota.

Aggiungere alcuni controlli al codice per garantire che i valori passati a strpos siano validi e l'errore scompaia.

1

Cambio linea 445

da

if($src = $img->getAttribute('src') AND strpos($src,$fgParams->get('base')) === false) { // prevents repeat processing 

a

if($src = $img->getAttribute('src') AND $fgParams->get('base')!="" AND strpos($src,$fgParams->get('base')) === false) { // prevents repeat processing 

Sembra così get ('base') sta tornando nulla. È possibile nella tua sceneggiatura? forse è l'indicazione di un errore precedente in un'altra area del programma.

0

Assicurati che il valore di $ fgParams-> get ('base') non sia vuoto come json menzionato in condizione.

0

Ho avuto lo stesso problema con:

if (htmlentities($controleren[$aantaltekens] == htmlentities($trans[$tellen]) 

L'errore è scomparso quando ho aggiunto i due () delimitatori:

if (htmlentities($controleren[$aantaltekens]) == htmlentities($trans[$tellen])) 

Quindi cercate:

if(($src = $img->getAttribute('src') AND strpos($src,$fgParams->get('base'))) === false) 

Indovina htmlentities richiede ai suoi i parametri devono essere all'interno (delimitatori).

+1

Benvenuti in StackOverflow! Se si formatta la risposta un po ', diventa più leggibile e le probabilità sono più alte persone voteranno per questo. Puoi modificarlo usando il pulsante _editt_ sotto il testo. –