Foros del Web » Programando para Internet » PHP »

Foreach para busqueda en cadena

Estas en el tema de Foreach para busqueda en cadena en el foro de PHP en Foros del Web. Tengo este codigo: $string = implode ('', file ($url)); function buscando($buscado,$cadena) { $buscar[0]=strtoupper($buscado); $buscar[1]=strtolower($buscado); $buscar[2]=ucfirst($buscar[1]); //$patron="/(<[h|H]1[A-Za-z0-9 \"=]*>)(.*)(".$buscar[0]."|".$buscar[1]."|".$buscar[2].")(.*)(</[h|H]1>)/"; $busqueda=preg_match_all("/(<[h|H]1[A-Za-z0-9 \"=]*>)(.*)(".$buscar[0]."|".$buscar[1]."|".$buscar[2].")(.*)(<\/[h|H]1>)/",$cadena,$salida); $resultado['cuantos']=count($salida[0]); foreach ($salida[0] as $valor){ $resultado["textos"][]=$valor; ...
  #1 (permalink)  
Antiguo 09/07/2003, 12:08
 
Fecha de Ingreso: febrero-2002
Mensajes: 139
Antigüedad: 15 años, 9 meses
Puntos: 0
Foreach para busqueda en cadena

Tengo este codigo:

$string = implode ('', file ($url));

function buscando($buscado,$cadena)
{
$buscar[0]=strtoupper($buscado);
$buscar[1]=strtolower($buscado);
$buscar[2]=ucfirst($buscar[1]);
//$patron="/(<[h|H]1[A-Za-z0-9 \"=]*>)(.*)(".$buscar[0]."|".$buscar[1]."|".$buscar[2].")(.*)(</[h|H]1>)/";
$busqueda=preg_match_all("/(<[h|H]1[A-Za-z0-9 \"=]*>)(.*)(".$buscar[0]."|".$buscar[1]."|".$buscar[2].")(.*)(<\/[h|H]1>)/",$cadena,$salida);
$resultado['cuantos']=count($salida[0]);
foreach ($salida[0] as $valor){
$resultado["textos"][]=$valor;
}
return $resultado;

}
/* Aqui empieza tu codigo */
$cadena = $string;
$buscado = $criterio;

// AHORA LLAMAMOS A LA FUNCION
$prueba=buscando($buscado, $cadena);

// Ahora vamos a ver los resultados

echo "Cantidad de Coincidencias: ".$prueba['cuantos']."<br>\n";
echo "Estas fueron las Coincidencias: <br>\n";
foreach ($prueba["textos"] as $p){
echo "<LI>".htmlspecialchars($p)."</LI>\n";
}

echo "<br>";


Bien, con estos busca en los encabezados de una pagina que contengan el criterio que le indico desde un form. Ahora quiero que me busque el criterio en los title de los enlaces:

<a href="lokesea.hrm" title="aqui es donde quiero buscar"></a>

$busqueda=preg_match_all("/(<[title|TITLE]=[A-Za-z0-9 \"=]*>)(.*)(".$buscar[0]."|".$buscar[1]."|".$buscar[2].")(.*)(<\/["]1>)/",$cadena,$salida);

No sé como hacerlo :( .

Debería buscar en title="...."

Alguien tiene alguna idea?


Y para que me busque en el titulo de una página no sería :

$busqueda=preg_match_all("/(<[title|TITLE]>)(.*)(".$buscar[0]."|".$buscar[1]."|".$buscar[2]."|".$buscar[3]."|".$buscar[4].")(.*)(<\/[title|TITLE]>)/",$string,$salida);$resultado['cuantos']=count($salida[0]);

Esto ultimo lo puedo hacer con:
$veces_title=substr_count("$meta[title]", "$criterio");


Pero, claro, diferencia entre mayusculas y minusculas :(

Me hechais un cable?
  #2 (permalink)  
Antiguo 09/07/2003, 15:25
 
Fecha de Ingreso: marzo-2003
Mensajes: 277
Antigüedad: 14 años, 9 meses
Puntos: 0
lo podrias hacer sin expreciones regulares no se cual es mejor pero yo lo haria haci

suponiendo que buffer es donde almacenas la linea que quieres procesar

$iniciotitle = strpos($Buffer,"<title>") + 7; //7 son los caracteres que ocupa el texto que quieres buscar
fintitle = strpos($Buffer,"</title>");

title = substr($buffer, $iniciotitle, $fintitle);


salu2

Última edición por kech; 09/07/2003 a las 15:28
  #3 (permalink)  
Antiguo 09/07/2003, 17:22
 
Fecha de Ingreso: febrero-2002
Mensajes: 139
Antigüedad: 15 años, 9 meses
Puntos: 0
Gracias kech pero me interesa hacerlo con expresiones regulares,

Para buscar los title de los enlaces he probado así:

$busqueda=preg_match_all("/([title|TITLE]=[A-Za-z0-9 \"=]*)(.*)(".$buscar[0]."|".$buscar[1]."|".$buscar[2]."|".$buscar[3]."|".$buscar[4]."|".$buscar[5]."|".$buscar[6]."|".$buscar[7]."|".$buscar[8]."|".$buscar[9].")(.*)([\"])/",$string,$salida);$resultado['cuantos']=count($salida[0]);

Pero además de los title me muestra la descripcion, keywords y algunas cosas más y no se pq?

Alguan idea del fallo?

Un saludo.
  #4 (permalink)  
Antiguo 09/07/2003, 20:08
 
Fecha de Ingreso: marzo-2003
Mensajes: 277
Antigüedad: 14 años, 9 meses
Puntos: 0
si es que te entendi lo que querias

<?
$line = "bla bla <title>El titulo</title>";
if (eregi ("<title>(.*)</title>", $line, $out)) {
$title = $out[1];
}

echo $title;
?>

seria haci para buscar los titulos
salu2
pd: sacado de un post de cluster
  #5 (permalink)  
Antiguo 10/07/2003, 04:26
 
Fecha de Ingreso: febrero-2002
Mensajes: 139
Antigüedad: 15 años, 9 meses
Puntos: 0
Lo que quiero es que em busque una palabra que le digo en el Titulo. Con veces_title=substr_count("$meta[title]", "$criterio"); diferencia entre mayusculas y minusculas.


Un slaudo.
  #6 (permalink)  
Antiguo 11/07/2003, 21:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues .. si ese es sólo tu problema (que te diferencia entre mayusculas y minusculas ...) .. compara la subcadena en la cadena origen ambas en minusculas por ejemplo, para eso usa funciones como strtolower().

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:35.