|
Posted by Jim Michaels on 10/15/81 11:39
"Steve" <ThisOne@Aint.Valid> wrote in message
news:pan.2006.01.19.07.57.27.732286@Aint.Valid...
> On Wed, 18 Jan 2006 21:36:20 -0800, yawnmoth wrote:
>
>> Say I have the following script:
>>
>> <?
>> $string = 'test';
>> if (eregi("^[a-z0-9| |\,\-\+\.]+$",$string))
>> {
>> echo 'matches!';
>> }
>> else
>> {
>> echo 'no match';
>> }
>> ?>
>>
>> Why does $string = 'te\st' yield a match? The ereg expression doesn't
>> have a \\ in it...
> the \ is escaping the s, so is invisible to the regular expression. To
> have an \ in the string, you'd need to see \\
>
>>
>> Also, what does | | do? Normally, it'd mean 'or', but inside of []'s?
>> And two of them?
> Well, one | inside a class ( [...] ) matches |. Not too sure what 2 of
> them mean, though. The space between them will also be matched. Using | as
> an or would require the use of parentheses as well.
>
> tbh, I'm not too sure the author really knew what they were doing, as
> almost all those characters with special powers ( like \ ) lose them all
> when between []'s (:
<?php print preg_match('/[\s]/'," \t "); ?>
1
Where did you hear this? this has been a part of Perl RE's for a long time.
Perl's REs were pretty much ported to PHP. PERL RE was POSIX if I am not
mistaken.
I've been able to escape things in [] character classes in UNIX and
grep-like programs for as long as I can remember. I thought I remember
having to so I could avoid weird behavior.
it's probably not safe to avoid escaping "-" because of its interpretation
as a range. better to be safe than sorry.
>
> hth,
>
> Steve
Navigation:
[Reply to this message]
|