Cita:
Iniciado por jaao_death
Es curioso porque no entiendo la función, qué es lo que quieres, extraer el número de palabras que entregas como segundo argumento (n), de la cadena que entregas como primero?
Código PHP:
<?php
function nombre_receta2($receta,$palabras){
if ($palabras>0){
$dividir=explode(" ",$receta);
$numero_palabras=count($dividir); // <<-- no utilizas esta variable?
for ($i=0; $i<$palabras; $i++){
if ($i<$palabras-1){ // <<-- y si niegas esta condición? (>) claro que si es un contador mejor compararla con (==) pero usando un while
return "vacio"; // <<-- eing?
}
return $dividir[$i]; //para qué bucle si solo devuelves la el primer elemento?
}
}
else{
return $receta;
}
}
$salida=nombre_receta2("esto es una receta", 4);
echo $salida;
?>
tal vez esto es lo que quieres:
Código PHP:
function nombre_receta2 ($receta, $palabras)
{
$receta = explode (" ", $receta);
$i = 0; // Indice
$buffer = ""; // para guardar el resultado
while ($i <= $palabras and !( $i> = count ($receta)) ) { // recorrer hasta que llegues al limite de palabras (no uso == por precaución [PARANOICMODE = 0N])
$buffer .= $receta[$i++] . " "; // llenas el bufer
}
return trim ($buffer); // el último caracter es un espacio, trim lo limpia, también otros posibles
// [PARANOICMODE = ...... OFF]
}
espero que te funcione
Código PHP:
function nombre_receta2 ($receta, $palabras)
{
$receta = explode (" ", $receta);
$i = 0; // Indice
$buffer = ""; // para guardar el resultado
while ($i <= ($palabras-1) and !($i >= count ($receta)) ) { // recorrer hasta que llegues al limite de palabras (no uso == por precaución [PARANOICMODE = 0N])
$buffer .= $receta[$i++] . " "; // llenas el bufer
}
return trim ($buffer); // el último caracter es un espacio, trim lo limpia, también otros posibles
// [PARANOICMODE = ...... OFF]
}
$rece = "caldo de gallina criolla con patatas"; //<<-- se me ocurrió, no sé si exista
$palab = 4;
echo nombre_receta2 ($rece, $palab);
devuelve caldo de gallina criolla