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 "A,B,C,D",
".A,B,C,D",
".A.B,C,D",
".A,B.C,D",
".A,B,C.D",
"A.B,C,D",
".A.B.C,D",
".A.B.C.D"
);
"A,B",
".A,B",
"B,C",
"B.C",
"C,D",
".C,D",
"A,B,C",
".A,B,C",
"A,B.C",
"B,C,D",
"B.C,D"
);
foreach($x as $pajar){
foreach($y as $aguja){
//si aguja no empieza por punto
if($aguja[0] !== "."){
//si se encuentra al principio
if(strpos($pajar,$aguja) === 0 ){ $simbolo = "^";
//si no esta al principio
}else{
$simbolo = ",";
}
}else{
//para los puntos se reemplazan todas con "\" mas abajo
$simbolo = "";
}
//luego añadir "\" para todas que llevan punto
//añadir el simbolo al regexp
echo $aguja." true ".$pajar."<br>";
}else{
echo $aguja." false ".$pajar."<br>";
}
}
}
Gracias otra vez y saludos