2010-12-31 22 views
10

Tutaj jest błąd:Jak rozwiązać błąd "pusty ogranicznik" strpos()?

Dla: PHP 5.2 +

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

i tutaj jest kod na tej linii:

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

która linia to linia 445? –

+0

Niestety - linia 445 jest pierwszą linią kodu I (powyżej) - tj. If ($ src = $ img-> getAttribute ('src') AND strpos ($ src, $ fgParams-> get ('base')) === false) { – Jamison

+0

Sprawdź plik helper.php i sprawdź numer linii 445. Daj nam znać, co dokładnie na numer linii 445. –

Odpowiedz

33

Ten błąd występuje, gdy drugi parametr do strpos jest pusty. Na przykład, można łatwo symulować ten błąd w wierszu poleceń:

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

W kodzie, oznacza to, że $fgParams->get('base') jest pusty.

Dodaj kilka czeków do swojego kodu, aby upewnić się, że wartości przekazywane do strpos są prawidłowe, a błąd zniknie.

1

Zmień linię 445

z

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

do

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

Wydaje się, że get ('baza') wraca nic. Czy to możliwe w twoim scenariuszu? być może jest to wskazanie poprzedniego błędu w innym obszarze programu.

0

Upewnij się, że wartość $ fgParams-> get ("base") nie jest pusta, jak json podany w warunku.

0

miałem ten sam problem z:

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

Błąd zniknął kiedy dodałem dwa () ograniczniki:

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

Więc spróbuj:

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

Guess htmlentities wymaga jego parametry muszą być w (ograniczniki).

+1

Witamy w StackOverflow! Jeśli sformatujesz trochę odpowiedź, stanie się ona bardziej czytelna, a szanse na to będą większe. Możesz go edytować za pomocą przycisku _editt_ pod tekstem. –