Frage

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))));
?>
War es hilfreich?

Lösung

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top