Hi Daniel,

"José daniel ramos wey" ...
> Hi! I´m new to regular expressions, and it seems to be an art to make it
> work as expected.
>
> I´m trying to remove all "single-line" comments from an string - that´s
> everything after "//" to the end of a line. I expected that this would do
> the job: ereg_replace("//[[:alnum:]]*\n","",$string), but it didn´t work.
>
> Any tips?

First off, IMO, you're better off using pcre regex functions than the posix
ones:

http://www.php.net/preg_replace

<?

$string = "// line 1\nNormal line\n// line 2 with a few odd
characters\"£$%^&*()_\nAnother normal line.";

$string = preg_replace('!^//.*$!m', '', $string);

echo $string;

?>

Your regex is basically saying this:
//[[:alnum:]]*\n

Match anywhere in the string (you have no anchor as to where the // should
start), consume anything that is alphanumeric (0 through 9, a through z), as
many times as they occur, followed by a new line.  Thus, your regex would
consume stuff like this:

//sdfffffffffffffffffffffffffffffffffdfffsdfsdfsdddddd12345678900987sdfsdbfs

but not

//
sdfffffffffffffffffffffffffffffffffdfffsdfsdfsdddddd12345678900987sdfsdbfs

or

// this is a comment.

as for my example, I'm using exclamation marks as the delimiters, the m
modifier which matches $ at the end of every newline, and ^ at the start of
every new line.

So:
!^//.*$!m

Means

^ at the start of the line
// if there are two of these
.* match everything
$ up to the end of the new line

and replace it with nothing.

Check the pattern modifiers etc in the manual.

HTH

~James




-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to