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.
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 [Seleccionar]
<!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í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>