|
Posted by John Nichel on 11/14/36 11:22
André Medeiros wrote:
> On Wed, 2005-07-27 at 12:30 -0400, John Nichel wrote:
>
>>André Medeiros wrote:
>>
>>>On Wed, 2005-07-27 at 11:55 -0400, John Nichel wrote:
>>>
>>>
>>>>André Medeiros wrote:
>>>>
>>>>
>>>>>That's not very nice of you, saying that to people who try to help ;)
>>>>>
>>>>>if( strpos( $_POST['frmName'], ' ' ) === false ) {
>>>>> // Do error handling here
>>>>>} else {
>>>>> // All is OK :)
>>>>>}
>>>>>
>>>>
>>>>How does that match "Firstname Lastname" better than a regex? That will
>>>>return true as long as there is at least one space, no matter what the
>>>>rest of the submission is. I could submit "$^&#^&$&#& )(*!@#", or I
>>>>could submit just a single space, and that would return true. strpos()
>>>>has it's uses, but this isn't one of them.
>>>
>>>There is a large number of sittuations that the regex won't work in.
>>>Special characters aren't included (from what I can understand using my
>>>weak regex knowlege), you could even be chinese, and it wouldn't work.
>>>
>>>If you use strpos with trim and strlen cleverlly, you won't have to
>>>worry about it again.
>>>
>>>My $0.02
>>
>>You can trim whitespace and check the length until the cows come home,
>>and that still won't stop a string such as "#T*& a%@!". A regex can
>>cover practicaly every situation for a name submission; it all depends
>>on how deep you want to validate. strpos() has too narrow of a scope to
>>match a complex pattern.
>
> You can have four words to describe a first and last name... you can
> have other alphabets, like arabian, chinese, etc... inserting accented
> characters alone would make that a big, nasty regex, let alone
> predicting ways you can describe first/last names.
And this can all be matched with a regex. Like I said, it depends on
how deep you want to validate.
> I'm not saying that I have the _BEST_ sollution. All I'm saying is that
> there are sittuations that are out of your control, and it seems to me
> this might be the easiest way out, guaranteeing that there are at least
> two words.
But it doesn't even guarantee that. As shown previously, it will return
true even on strings that have non-word characters in them (no matter
the language). The only thing you're guaranteeing with strpos (
$string, " " ); is that the string contains a space...that's it; and
basically that's what you're limited too, until you start running other
functions to check/remove other parts of the string
> If you find a way to fit accented characters / other alphabets there
> nicelly, be my guest :)
It's really quite easy, when you look at it from the other direction.
When you're trying to match a pattern that can contain just about
anything and be considered valid, it might be best to check for
characters that you _do not_ want in there. With that in mind, there's
no reason to build a regex that can account for every possible alphabet
and/or accents. Make sure it contains a space, but doesn't contain
characters we don't want (such as #@%).
--
John C. Nichel
ÜberGeek
KegWorks.com
716.856.9675
john@kegworks.com
Navigation:
[Reply to this message]
|