I'm new in stackoverflow. But I need help, look, i'm making a function that extract multiple words from a string. The problem is that it returns number. I tried it with another $cuerpo, but it doesn´t work, it returned me 4. Please help me. Thanks a lot. Here's my code.

<?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))));
?>
有帮助吗?

解决方案

Your error comes from these lines:

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

// ........

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

The function array_push returns the number of elements in the array, so it returns 1 if you have one element and so on...

I guess you have to return $total instead, like:

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

And, also, you have to declare $cuerpo as a global variable inside the function.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top