2013-07-01 29 views
0

我是新的stackoverflow。但我需要帮助,看,我正在做一个函数,从字符串中提取多个单词。问题是它返回数字。 我试过用另一个$ cuerpo,但它不工作,它返回我4. 请帮助我。非常感谢。 这是我的代码。PHP使用Stripos和array_push

<?php 
$cuerpo = " Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec viverra metus in turpis scelerisque, a mollis purus egestas. Quisque viverra rhoncus nisi, at semper nisi lobortis eu. Ut porttitor mattis orci. Quisque laoreet interdum libero, ut tristique velit tempus nec. Donec id auctor mi. Proin in quam ligula. Aenean suscipit pharetra pharetra."; 
function extrae_cadenas($arraystring, $cuerpodos) { 
    $total = array(); 
    $arr = array(); 
    $arraynum = count($arraystring); 
    $cont = 0; 
    $contador_substr = 1; 
    if(is_array($arraystring)) 
    { 
     foreach($arraystring as $current) 
     { 
      $cont=$cont+1; 
      $on=strlen($current); 
      if($cont == $arraynum) 
      { 
       break; 
      } 
      else 
      { 
       if($contador_substr > 1) 
       { 
        $pos = $pos + $on; 
       } 
       else 
       { 
        $pos = stripos($cuerpodos,$current); 
       } 
       if($pos==true) 
       { 
        $a = substr($cuerpo,$pos,30); 
        $salidas = array_push($total,$a); 
       } 
       else 
       { 
       } 
      } 
      $contador_substr = $contador_substr + 1; 
     } 
     if($salidas == "") 
     { 
      $salida = "No se encontraron las palabras"; 
     } 
     else 
     { 
      $salida = $salidas; 
     } 
     return $salida; 
    } 
    else 
    { 
     return "No"; 
    } 
} 
print_r(extrae_cadenas(array("_lorem_","_ipsum_"),str_replace(" ","_",str_replace("\n","_",$cuerpo)))); 
?> 
+1

请考虑正确地缩进您的代码,这样很难阅读。 – Tomdarkness

+0

RTFM:http:// stripos。你用错了。它不返回“真”。如果找到该值,则返回“int”(如果值位于字符串的起始处,则返回0);如果未找到,则返回布尔值FALSE。 –

+0

我试图改变这一点:如果 ($ POS == FALSE){ } 其他 { $ A = SUBSTR($ cuerpo,$ POS,30); $ salidas = array_push($ total,$ a); } 但没有任何反应,它又回到了我4. – Darkness

回答

0

你的错误来自这些行:

$salidas = array_push($total,$a); 

// ........ 

if($salidas == "") { 
    $salida = "No se encontraron las palabras"; 
} else { 
    $salida = $salidas; 
} 
return $salida; 

array_push返回数组中的元素数量的功能,所以如果你有一个元素等等......

则返回1

我想你必须返回$total代替,如:

if($salidas == "") { 
    $salida = "No se encontraron las palabras"; 
} else { 
    $salida = $total; 
} 

而且,还必须声明$cuerpo作为函数内的全局变量。

+0

你有全部的理由!非常感谢!!! – Darkness

+0

@Darkness:不客气。 – Toto