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]