Hallo,
ich versuche schon seit einiger Zeit einen regulären Ausdruck zu schreiben, der Algorithmen für den Zauberwürfel erkennt. So ein Algorithmus kann z.B. so aussehen:
F U B2 R' L' D (Die Buchstaben F, B, U, D, R oder L mit einem ', einer 2 oder garnichts)
Mein Ausdruck sollte quasi so aussehen:
(Leerzeichen, Zeilenumbruch o.ä.)
( (F,B,U,D,R oder L) (',2 oder garnix) (eventuell Leerzeichen) ) {3 mal oder öfters}
(Leerzeichen, Zeilenumbruch o.ä.)
sieht so aus, funktioniert aber nicht:
Aber leider scheint der Code nur in eine Dauerschleife zu führen.
Hoffentlich könnt ihr mir helfen!
MFG, Felk
EDIT: Hab vergessen zu erwähnen, wo die Dauerschleife wahrscheinlich entsteht, hier einfach mal der ganze Code-Snippet (das wichtige ist rot):
ich versuche schon seit einiger Zeit einen regulären Ausdruck zu schreiben, der Algorithmen für den Zauberwürfel erkennt. So ein Algorithmus kann z.B. so aussehen:
F U B2 R' L' D (Die Buchstaben F, B, U, D, R oder L mit einem ', einer 2 oder garnichts)
Mein Ausdruck sollte quasi so aussehen:
(Leerzeichen, Zeilenumbruch o.ä.)
( (F,B,U,D,R oder L) (',2 oder garnix) (eventuell Leerzeichen) ) {3 mal oder öfters}
(Leerzeichen, Zeilenumbruch o.ä.)
sieht so aus, funktioniert aber nicht:
Code:
#(\s|\r\n?|\n?)(((F|B|R|L|U|D)('|2){0,1}(\s){0,1}){3,})(\s|\r\n?|\n?)#
Code:
<a href=\"http://alg.garron.us/?alg=$2&animtype=solve\" target=\"_blank\">$2</a>
Hoffentlich könnt ihr mir helfen!
MFG, Felk
EDIT: Hab vergessen zu erwähnen, wo die Dauerschleife wahrscheinlich entsteht, hier einfach mal der ganze Code-Snippet (das wichtige ist rot):
Code:
$pattern = array( "#\[alg=([2-7]{1})\](.*?)\[\/alg\]#si", "#\[alg\](.*?)\[\/alg\]#si", "#(\s|\r\n?|\n?)(((F|B|R|L|U|D)('|2){0,1}(\s){0,1}){3,})(\s|\r\n?|\n?)#" ); $replace = array( "<a href=\"http://alg.garron.us/?alg=$2&animtype=solve&cube=$1x$1x$1\" target=\"_blank\">$2</a>", "<a href=\"http://alg.garron.us/?alg=$1&animtype=solve\" target=\"_blank\">$1</a>", "<a href=\"http://alg.garron.us/?alg=$2&animtype=solve\" target=\"_blank\">$2</a>" ); while(preg_match($pattern[0], $message) or preg_match($pattern[1], $message) or preg_match($pattern[2], $message)) // Dauerschleife hier? { $message = preg_replace($pattern, $replace, $message); }
Kommentar