elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Ayuda: Analiza texto con PHP
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda: Analiza texto con PHP  (Leído 2,533 veces)
Draco Heroicus


Desconectado Desconectado

Mensajes: 303


Ver Perfil
Ayuda: Analiza texto con PHP
« en: 25 Enero 2007, 23:22 pm »

 :huh: Hola me he quedado seco de ideas en esto.

Estoy tratando de hacer un analizador de texto con PHP.

Estoy usando los siguientes operadores (como en el google).

" " (Operador de mayor jerarquia)

&&, + , || (De segunda jerarquia)

El problema es que no consigo hacer que...

1) Obtener las cadenas encerradas en " ", o las que estas despues de unas doble comillas si cerrar.

2) y con los demas operandos no he podido hacer nada ya que por ser las dobles comillas de mayor jerarquia, no he trabajado con los demas operadores.

Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="">
  <input name="criterio" type="text" id="criterio" />
  <input type="submit" name="Submit" value="Enviar" />
</form>
<?php
$criterio=$_POST["criterio"];

//Operador de primer Orden
$Op1='"';
//Operadores de 2do orden.
$and='&&';
$and2='+';
$or='||';

$Op_count=0;
$Op_cerrado="nada";

$temp_cadena="";

$trim_cadena=trim($criterio); //sin espacios al principio o final.
$longitud=strlen($trim_cadena); //Longitud de la cadena.
$lower_cadena=strtolower($trim_cadena); //Convierte a minusculas.

$chunk=chunk_split($lower_cadena,1,'-'); //Divide en 1 caracter
$split=split("-",$chunk);

$Op1_count=substr_count($lower_cadena,$Op1); //Las veces que aparece "
$and_count=substr_count($lower_cadena,$and); //LAs veces que aparece &&
$and2_count=substr_count($lower_cadena,$and2); //Las veces que aparece +
$or_count=substr_count($lower_cadena,$or); //Las veces que aparece ||

for($i=0;$i<strlen($split);$i++){
$restantes=$longitud-$i;
if($split[$i]==$Op1){
$Op_count++;
if($Op_cerrado!="no"){
$Op_cerrado="no";
}else{
$Op_cerrado="si";
}
}else{
$temp_cadena=$temp_cadena.$split[$i];
if($split[$i++]==$Op1 && $Opc_cerrado=="no"){
$Op_array[]=$temp_cadena;
}elseif($Op_cerrado=="si" && $split[$i++]==$Op1){
$NoOp_array[]=$temp_cadena;
}elseif($restantes==0){
$NoOp_array[]=$temp_cadena;
}
}
}

?>
</body>
</html>


En línea

дٳŦ٭
GNU/Linux Infrastructure Specialist
Ex-Staff
*
Desconectado Desconectado

Mensajes: 5.110


Ver Perfil WWW
Re: Ayuda: Analiza texto con PHP
« Respuesta #1 en: 26 Enero 2007, 00:41 am »

Pruebas con:

Código:
<?php
addslashes($criterio);
?>

http://www.php.net/manual/es/function.addslashes.php

Necesitas escapar las "".


En línea

Draco Heroicus


Desconectado Desconectado

Mensajes: 303


Ver Perfil
Re: Ayuda: Analiza texto con PHP
« Respuesta #2 en: 26 Enero 2007, 02:59 am »

 ;D

Es que estoy haciendo un buscador :(, eso no me sirve.

1) "Hola"

Obtener Hola

2) "Hola" maldito "PHP que no funciona :("

Obtener lo de " " y aparte lo que no esta encerrado.

Es que mi codigo es logico, pero no funciona.

Lo hize mas facil que que detecte cuando hay un " y aun asi no funciona, fue algo asi

Código:
<?php
$criterio=$_POST["criterio"];

//Operador de primer Orden
$Op1='"';
//Operadores de 2do orden.
$and='&&';
$and2='+';
$or='||';

$split_count=0;

$trim_cadena=trim($criterio); //sin espacios al principio o final.
$longitud=strlen($trim_cadena); //Longitud de la cadena.
$lower_cadena=strtolower($trim_cadena); //Convierte a minusculas.

$chunk=chunk_split($lower_cadena,1,'-'); //Divide en 1 caracter
$split=split("-",$chunk);

$Op1_count=substr_count($lower_cadena,$Op1); //Las veces que aparece "
$and_count=substr_count($lower_cadena,$and); //LAs veces que aparece &&
$and2_count=substr_count($lower_cadena,$and2); //Las veces que aparece +
$or_count=substr_count($lower_cadena,$or); //Las veces que aparece ||

while(!empty($split)){
if($split[$split_count]==Op1){
echo "xD";
}
$split_count++;
}

?>
En línea

alatul

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Ayuda: Analiza texto con PHP
« Respuesta #3 en: 10 Abril 2007, 03:05 am »

Este es mi primer post y tampoco llevo mucho tiempo con este lenguaje pero yo tiraría por donde te ha indicado Ing_Amc. Si no te sirve la función addslashes puedes a la hora de recoger la cadena intentar sustituir los caracteres " por otros que tu quieras, como por ejemplo ··|· o cualquier "cadena" de caracteres que no se vayan a dar por su rareza.

Espero te sirva.
En línea

Ertai
Colaborador
***
Desconectado Desconectado

Mensajes: 2.025


Ralph Wiggum


Ver Perfil
Re: Ayuda: Analiza texto con PHP
« Respuesta #4 en: 10 Abril 2007, 18:03 pm »

Hola,

Yo probaría con usar la funcion explode:

Código:
<?php
// Example 1
$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2
?>

Esto te servirá almenos para separar las cadenas. Luego, con strpos (http://es2.php.net/manual/en/function.strpos.php), puedes saber que partes del array de explode estaban entre comillas.

Es el metodo mas rápido, aunque seguro que hay muchisimos mejores, como encontrar con strpos la posicion de la comilla y ese resultado + 1, empiezas a buscar la siguiente comilla. Luego cortas la cadena entre ambos resultados.

Saludos!
En línea

Si la felicidad se comprara, entonces el dinero sería noble.

Código:
void rotar_by_ref(int& a, int& b) {
   /* Quien dijo que no se podia sin una variable temporal? */
   *a = *a ^ *b;
   *b = *a ^ *b;
   *a = *a ^ *b;
}
[ Alberto]
Wiki

Desconectado Desconectado

Mensajes: 1.232



Ver Perfil
Re: Ayuda: Analiza texto con PHP
« Respuesta #5 en: 10 Abril 2007, 19:06 pm »

hola prueba con la funcionó MATCH...AGAINST con esto puedes lograr algo como los buscadores... además es mas rapida que otros métodos de consulta

http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html
http://www.desarrolloweb.com/articulos/2087.php
http://www.programacion.net/articulo/adr_buscador/
En línea

Debemos de hacer todas las cosas sencillas, excepto las cosas sencillas
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines