simplecontent

PHP Snippets und Beispiele

Inhaltsverzeichnis A-Z Register
Beispiel ausführen

Alle Kommentare entfernen

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. Das PHP Code Beispiel:
<?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 /* */ natürlich 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" 
,''$s);

    return 
$r;
}


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

$new strip_comments($text);

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

?>

Dieses PHP Snippet soll in erster Linie als Beispiel und Anregung für eigene Bemühungen dienen.
Gerne darf man es für Projekte aller Art benutzen.
Möchte jemand das Snippet also solches in ähnlicher oder anderer Form veröffentlichen ist ein kleiner Hinweis auf simplecontent.net nicht zuviel verlangt oder Herr Koch?
Für die Abwesenheit von Fehlern kann natürlich keine Gewähr gegeben werden.