--- ../../temp/mediawiki-1.5beta4/includes/Parser.php 2005-07-30 16:03:34.000000000 -0400 +++ Parser.php 2005-12-03 10:50:12.000000000 -0500 @@ -788,7 +788,7 @@ } /** - * Replace special strings like "ISBN xxx" and "RFC xxx" with + * Replace special strings like "#ISBN xxx" and "RFC xxx" with * magic external links. * * @access private @@ -2691,15 +2691,27 @@ $fname = 'Parser::magicISBN'; wfProfileIn( $fname ); - $a = split( 'ISBN ', ' '.$text ); + $a = preg_split( '/IS(B|S)N/ ', ' '.$text, -1, PREG_SPLIT_DELIM_CAPTURE ); if ( count ( $a ) < 2 ) { wfProfileOut( $fname ); return $text; } - $text = substr( array_shift( $a ), 1); - $valid = '0123456789-Xx'; + $text = substr( array_shift( $a ), 1); foreach ( $a as $x ) { + if ( preg_match( '/IS(S|B)N/', $x )){ + continue; + } + if ($x == 'S' or $x == 'B' ){ + $stype = $x; + if ( $stype == 'B'){ + $valid = '0123456789-Xx'; + } + else { + $valid = '0123456789-123456789'; + } + continue; + } $isbn = $blank = '' ; while ( ' ' == $x{0} ) { $blank .= ' '; @@ -2718,12 +2730,13 @@ $num = str_replace( 'x', 'X', $num ); if ( '' == $num ) { - $text .= "ISBN $blank$x"; - } else { + $text .= "IS".$stype."N $blank$x"; + } + else { $titleObj = Title::makeTitle( NS_SPECIAL, 'Booksources' ); $text .= 'ISBN $isbn"; + $titleObj->escapeLocalUrl( 'is'.strtolower($stype).'n='.$num ) . + "\" class=\"internal\">IS".$stype."N ".$isbn.""; $text .= $x; } }