Re: [PHP] preg_match() returns false but no documentation why



Stut wrote:
Jared Farrish wrote:
On 5/30/07, Richard Lynch <ceo@xxxxxxxxx> wrote:
On Wed, May 30, 2007 12:33 pm, Jared Farrish wrote:
>
> preg_match("^ldap(s)?://[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$",$this->server)

You are missing the start/end delimiters is your first problem...

Which ones? I've got the starter "^" and the closer "$", so what else am I
missing?

You need delimiters around the regex, as stated in the documentation.

preg_match("/^ldap(s)?://[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/",$this->server)
This isn't going to work, the op has two forward slashes in the string that he is wanting to match with.

The op will need to use something other than forward slashes.

so, this is going to match:
ldap://testing123.com TRUE
ldap://www.testing-123.com FALSE
ldap://testing123.com.uk FALSE
ldap://testing123.or.us TRUE

preg_match('|^ldap(s)?://[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$|', $this->server )

I also recommend using single quotes instead of double quotes here.

btw: why is there a period in the second pattern? Also, why are you allowing for uppercase letters when the RFC's don't allow them?

Just my thoughts


Although you don't need to use slashes, you can use any character you want but you must escape it in if it appears in the regex.

would a regex operation return false?

It would return false if your string doesn't match the expression.


The manual claims it will return a 0 signaling "0 matches found." And then,
under "Return Values," it's says very quickly:

"*preg_match()* returns *FALSE* if an error occurred."

If it's not returning ANYTHING I'm assuming it's faulting, but the calling
the error function returns 0 (kind've ironic, really...).

It will return false on an error, such as not having matching delimiters aroung the regex.

The error function may retuyrn 0, but which of the following constants is defined as 0?

PREG_NO_ERROR
PREG_INTERNAL_ERROR
PREG_BACKTRACK_LIMIT_ERROR
PREG_RECURSION_LIMIT_ERROR
PREG_BAD_UTF8_ERROR

-Stut



--
Jim Lucas

"Some men are born to greatness, some achieve greatness,
and some have greatness thrust upon them."

Unknown
.



Relevant Pages

  • Re: [PHP] preg_match() returns false but no documentation why
    ... You are missing the start/end delimiters is your first problem... ... Although you don't need to use slashes, you can use any character you want but you must escape it in if it appears in the regex. ... The error function may retuyrn 0, but which of the following constants is defined as 0? ...
    (php.general)
  • Re: [PHP] preg_match() returns false but no documentation why
    ... On 5/30/07, Richard Lynch wrote: ... You are missing the start/end delimiters is your first problem... ... It would return false if your string doesn't match the expression. ...
    (php.general)
  • Re: [PHP] preg_match() returns false but no documentation why
    ... On Wed, May 30, 2007 3:06 pm, Jared Farrish wrote: ... You are missing the start/end delimiters is your first problem... ... Whatever character you want to use: ...
    (php.general)
  • Re: again re. Photos- trying (very)
    ... Anita wrote: ... Smile for me:) ... As the two slashes are missing, the link is underlined from www. ...
    (uk.people.silversurfers)
  • Re: Prune double slahes
    ... unless I am missing something, ... slashes... ... is this just a debugger issue? ... It displays strings in the escaped ...
    (microsoft.public.dotnet.languages.csharp)