Ver Mensaje Individual
  #6 (permalink)  
Antiguo 22/01/2016, 20:24
matake
 
Fecha de Ingreso: mayo-2013
Mensajes: 191
Antigüedad: 11 años
Puntos: 10
Respuesta: comparacion de cadenas

Pues al final ... he adaptado tu idea ( que me gustaba mas desde el principio ) y creo que se adapta a todas las combinaciones ( tampoco voy a tener combinaciones mas grandes de 10 - 20 characteres ( excluidos puntos y comas )

aqui va

Código PHP:
Ver original
  1. $x = array(//pajar
  2.     "A,B,C,D",
  3.     ".A,B,C,D",
  4.     ".A.B,C,D",
  5.     ".A,B.C,D",
  6.     ".A,B,C.D",
  7.     "A.B,C,D",
  8.     ".A.B.C,D",
  9.     ".A.B.C.D"
  10. );
  11.  
  12. $y = array(//aguja
  13.     "A,B",
  14.     ".A,B",
  15.     "B,C",
  16.     "B.C",
  17.     "C,D",
  18.     ".C,D",
  19.     "A,B,C",
  20.     ".A,B,C",
  21.     "A,B.C",
  22.     "B,C,D",
  23.     "B.C,D"
  24. );
  25.  
  26.  
  27. foreach($x as $pajar){
  28.     foreach($y as $aguja){
  29.    
  30.         //si aguja no empieza por punto
  31.         if($aguja[0] !== "."){
  32.             //si se encuentra al principio
  33.             if(strpos($pajar,$aguja) === 0 ){
  34.                 $simbolo = "^";
  35.             //si no esta al principio
  36.             }else{
  37.                 $simbolo = ",";
  38.             }
  39.         }else{
  40.             //para los puntos se reemplazan todas con "\" mas abajo
  41.             $simbolo = "";
  42.         }
  43.         //luego añadir "\" para todas que llevan punto
  44.         $aguja = str_replace(".","\\.",$aguja);
  45.        
  46.         //añadir el simbolo al regexp
  47.         if(preg_match("/$simbolo$aguja/", $pajar)){
  48.             echo $aguja." true ".$pajar."<br>";
  49.         }else{
  50.             echo $aguja." false ".$pajar."<br>";
  51.         }
  52.     }
  53. }

Gracias otra vez y saludos