Invece di inzozzare l' OT magari lo scrivo qua' , servisse anche ad altri
In pratica capita di dover fare un parser per prendere testo , codice o quant' altro da un file o un testo rappresentante un file ... o una stringa con commenti ...
questa funzione semplicemente prende tutti i testi racchiusi tra apici singoli e/o doppi, li cambia nel loro hash md5, elimina a quel punto i commenti ( non importa se avevano stringhe al loro interno perche' sono stringhe di commenti, quindi vanno comunque tolte anche se hashate ) , poi riapplica agli hash residui, quelli non portati via dai commenti, il replace inverso , ed eccovi i testi con commenti o meno salvaguardati
spero sia utile a qualcuno
funzione
codice:function removePHPComments( $text ) { /** * Function removePHPComments: * removes all php comment from a string * ------------------------------------- * @author Andrea Giammarchi * @date 30/03/2005 * @compatibility PHP >= 4 */ $string2md5 = create_function( '$a,$b,&$d', '$c = md5($b); $d[$c] = $a.$b.$a; return $c;' ); $comments = $find = $replace = Array(); $text = preg_replace( "/('|\")([^\a]*?)(\\1)/ie", '$string2md5( "\\1", "\\2", $comments );', $text ); $text = preg_replace( Array( "/(\/\/)([^\\n]*|[^\\r]*)/", "/(\/\*)([^\a]*?)(\*\/)/i" ), "", $text ); foreach( $comments as $k => $v ) { if( strpos( $text, $k ) !== false ) { array_push( $find, $k ); array_push( $replace, $v ); } } return str_replace( $find, $replace, $text ); }
esempio
codice:$text = " /** osaksao o kds jasd asodsoia dj a jasoi d ojsadoiasj */ \"sadja wij wajdiw // asd wj aoid joaw /* lol */ ijd oai jd \" // asjdijaoi wiojjo iwjd 'lol' /** asjidj aowdiwaojwdiowdijawii*/ \"jiwjdiaj aidwwawida \" "; echo '<pre>'.removePHPComments( $text ).'</pre>';
Nota Bene
e' studiata per commenti di tipo php, quindi
// per linea singola
e
/*
per multi linea
*/
basta modificare in modo ottimale le pregs per adattarsela per commenti tipo python o mysql
#
o altri che siano ...
insomma, una funzione per tante soluzioni, basta sapere cosa si vuole togliere




Rispondi quotando