expresiones regulares (and)
2 seguidores
Buenas...
Estoy viendo que existe el caracter | que sirve como separador de expresiones. Ejemplo
$frase="El patio de mi casa es particular";
$regexp="patio|llueve";
$enc=eregi($frase,$regexp); --> Devuelve TRUE
Pero esto no me vale ya que necesito que devuelva TRUE si se encuentran ambas palabras y no alguna de ellas. ¿Existe algún caracter en las expresiones regulares para hacer esto?
Gracias
dagi3d
buenas
creo que tendrias dos posbilidades(suponiendo que el orden de aparicion de las palabras sea indiferente):
realizar dos comprobaciones distintas, en plan
<code>if (eregi("patio", $frase) && eregi("llueve", $frase))
{
echo "encontrado";
}
else
{
echo "no encontrado";
}</code>
o bien hacerlo directamente en una sola expresion:
<code> $frase = "El llueve de mi casa es particular patio";
$regexp = "((patio).*(llueve))|((llueve).*(patio))";
if (eregi($regexp, $frase))
{
echo "encontrado.<br>";
}
else
{
echo "no encontrado";
}</code>
saludos
gandalias
Hey. Gracias!!
Bueno, esto es para una base de datos...
Al final lo habia resuelto construyendo la condicion aunque no se yo estará un poco guarripeich... De momento sobre unos 2000 registros va rápido.
<code> if ($numcampos>0) {
$condicion="(nota regexp '$campos[0]')";
for ($i=1;$i<$numcampos;$i++) {
$condicion="$condicion AND (nota regexp '$campos[$i]')";
}
$query="select * from circulares where ($condicion) order by anonota desc,numnota desc";
}</code>
Como ves en realidad es para una consulta a una base de datos MySQL utilizando regexp. Me gusta más la segunda forma que has puesto tu construyendo la expresión regular y evaluando una sola vez. Voy a echarmelo un vistazo (aunque no se si voy por buen camino utilizando regexp para una consulta a una base de datos, ¿que opinais?)
Muchas gracias!!