Alle Kommentare entfernen

Beispiel ausführen
Die regulären Ausdrücke in diesem Beispiel sind nicht auf meinem Mist gewachsen sondern stammen aus dem hervorragenden Buch "Mastering Regular Expressions" von Jeffrey E. F. Friedl. Immerhin den Ausdruck zum matchen von heredoc-Abschnitten habe ich selbst hinzugefügt. Wer das hier verstehen möchte möge sich also das Buch besorgen. (Hinweis Es ist nicht für Einsteiger geeignet, wirklich nicht.) Eine besonders elegante Möglichkeit Kommentare zu entfernen ist es einfach den PHP-Tokenizer zu benutzen.
<?php

$text 
= <<< EOT

/*
Dieser Kommentar soll entfernt werden
<a href="http://www.test.com">test</a>

*/

\$a = 12;

// Dieser hier auch ...

\$b = 10; /* ... und der hier */

\$s = 'Innerhalb eines Strings /* */ natuerlich nicht'; /* aber der hier schon, gelle  */

\$test = "HUHUH /* geht doch oder?*/";



\$a = 42 // Die Antwort

\$tmp = <<< eot

Dieser Kommentar sollte erhalten bleiben, denn

/* bal */

er steht innerhalb eines here doc Abschnitts.

eot;

EOT;



function 
strip_comments($s)
{
    
$comment1 '/\*[^*]*\*+(?:[^/*][^*]*\*+)*/';
    
$comment2 '//[^\n]*';
    
$comment3 '\#[^\n]*';

    
$single "'[^'\\\]*(?:\\.[^'\\\]*)*'";
    
$double '"[^"\\\]*(?:\\.[^"\\\]*)*"';
    
$other '[^"\'/\#<]';

    
$eot '<<<\s?(\S+)\b.*^\\2';

    
$r preg_replace ("#($other+ |
                  
$single$other* |
                  
$double$other* |
                  
$eot$other*)|
                  
$comment1|
                              
$comment2|
                              
$comment3
                #msx" 
,'\1'$s);

    return 
$r;
}


echo 
'<h2>Original</h2><pre>'.htmlentities($text).'</pre>';

$new strip_comments($text);

echo 
'<h2>Ohne Kommentare</h2><pre>'.htmlentities($new).'</pre>';

?>

Benutzte Funktionen


Hinweise zum DatenschutzImpressum © 2005-2008 S. Eickhoff