Question

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))));
?>
Was it helpful?

Solution

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top