22.07.2011, 23:41
(Dieser Beitrag wurde zuletzt bearbeitet: 23.07.2011, 00:32 von Stefan Pochmann.)
Hab mal grad beide Faelle "verarbeitet" (also nicht verarbeitet). Probier mal das hier statt deinem bisherigen alglinker_run:
Hier ein Test:
Das ergibt:
PHP-Code:
function alglinker_run ( $message ) {
$move = "\b[UDFBLRudfblrMESxyz](?:'|2|\b)";
return preg_replace( "#\[alg(?:=([2-7]))?](.*?)\[/alg]|($move(?: $move){2,})|(\[url.*?/url]|<a .*?/a>)#eis",
'"$4" ? stripslashes("$4") : garron("$2$3","$1")',
$message );
}
function garron ( $alg, $size ) {
$alg = stripslashes( $alg );
$par = preg_replace( '/\s+/', '_', strtr( $alg, "'", "-" ) );
$cube = $size ? "&cube={$size}x{$size}x{$size}" : '';
return "<a href=\"http://alg.garron.us/?alg=$par$cube&animtype=solve¬ation=WCA\" target=\"_blank\">$alg</a>";
}
Hier ein Test:
Code:
$message = <<<MESSAGE
foo1 R U R' U' Url1
foo2 [alg]R U R' U'[/alg] Url2
foo3 [alg=4]Rw U
F2
Rw' U'[/alg] Url3
foo4 [url=http://alg.garron.us/?alg=R_U_R-_U-]R U R' U'[/url] Url4
foo5 <a href="http://alg.garron.us/?alg=R_U_R-_U-" target="_blank">R U R' U'</a> Url5
MESSAGE;
echo alglinker_run( $message );
Das ergibt:
Code:
foo1 <a href="http://alg.garron.us/?alg=R_U_R-_U-&animtype=solve¬ation=WCA" target="_blank">R U R' U'</a> Url1
foo2 <a href="http://alg.garron.us/?alg=R_U_R-_U-&animtype=solve¬ation=WCA" target="_blank">R U R' U'</a> Url2
foo3 <a href="http://alg.garron.us/?alg=Rw_U_F2_Rw-_U-&cube=4x4x4&animtype=solve¬ation=WCA" target="_blank">Rw U
F2
Rw' U'</a> Url3
foo4 [url=http://alg.garron.us/?alg=R_U_R-_U-]R U R' U'[/url] Url4
foo5 <a href="http://alg.garron.us/?alg=R_U_R-_U-" target="_blank">R U R' U'</a> Url5