You are here: Re: [PHP] User Passwords: checking for unique chars « PHP « IT news, forums, messages
Re: [PHP] User Passwords: checking for unique chars

Posted by Jochem Maas on 02/23/05 18:11

Richard Lynch wrote:
> Jochem Maas wrote:
>
>>Alex Gemmell wrote:
>>
>>>On Mon, 14 Feb 2005 22:51:42 +0100, Jochem Maas <jochem@iamjochem.com>
>>>wrote:
>>>
>>>
>>>>Alex Gemmell wrote:
>>>>
>>>>> #Contain at least one number
>>>>> if ( !preg_match ('/\\d/', $password) ) return false;
>>>>
>>>>Im pretty sure the double backslash is a typo.
>

nice explaination....thanks for that! I will definitely be changing my habits
BUT then again your average regexp is a mind**** enough without escaping
the bslash.... oh well at least I now know what I _should_ be doing :-)

>
> No, it's *NOT* a typo.
>
> Inside of apostrophes, \ *IS* a special character.
>
> It's also special inside of quotes, but let's stick with apostrophes for now.
>
> \ is used to escape an apostrophe inside of apostrophes.
>
> So you can do:
>
> $var = 'Don\'t forget to escape apostrophes!';
>
> Because \ is used to escape the apostrophe, you also use it to escape the
> backslash itself:
>
> $var = 'Backslash \\ should also be escaped';
>
> Inside apostrophes, those are the ONLY two "special" cases:
> \' turns into apostrophe: '
> \\ turns into backslash: \
>
> Inside quotes, you've got a bunch more like \n, \r, \t as well as variable
> substitution going on.
>
> Now, because ONLY those two special cases exist, you *CAN* type:
>
> $var = '\d';
>
> and PHP will store internally: \d
>
> because the backslash wasn't followed by ' or \, so it must be just a
> literal backslash.
>
> But that doesn't make it Good Style.
>
> In my *opinion* one should use:
>
> $var = '\\d';
>
> so that it is completely clear that the backslash is being escpaed, and
> you're not trying to get a control-D (end of file) or whatever.
>
> Or, put it this way:
>
> It's incredibly unlikely that PHP will ever change '\d' to mean control-D.
>
> But it'e even MORE unlikely that PHP would change '\\d' to mean anything
> other than: \d
>
> The same sort of paradigm is true for quote marks -- You *CAN* get away
> with a single \ inside of quotes, so long as it's not followed by:
> n
> r
> t
> $
> "
> x[0-9A-Fa-f]{1,2} (a Hex number with \x in front)
> [0-7]{1,3} (an Octal number with \ in front)
>
> But with *THAT* many possible following characters, people have gotten
> more in the habit of using \\ inside quotes.
>
> But PHP is consistent with *BOTH* apostrophes and quotes about the \
> character: There are always a limited number of character combinations
> that can follow \ to give it special meaning. Any other character
> combination following \ just uses \ literally.
>
> \d always turns into \d inside quotes or apostrophes.
> \a always turns into \a
> \b turns into \b
> .
> .
> .
>
> ONLY \", \n, \r, \t, etc (see above) turn into something else inside quotes.
> ONLY \' and \\ turn into something else inside apostrophes.
>
> To be CLEAR in your code, however, I highly recommend using \\ in ALL
> strings when you want a literal backslash -- so that there is no question
> whether you are trying to escape the next character as something special,
> or you just want a backslash.
>
> \\ *always* means a single backslash
>
> \ sometimes means a single backslash, and sometimes means something
> entirely different depending on what follows it.
>
> Use \\, so you *always* know what is going on.
>
>
>>well you have to escape the bslash if your using double quotes.
>>there is a reason sane people (normally) write regexps in php
>>using single quotes :-)
>
>
> Unless your regex contains apostrophes a lot, and then quotes are easier. :-)
>
> //Bad Example: (strstr would be better choice here)
> $contraction = ereg("'", $word);
>
> I'm sure others will disagree with me, but this is my opinion on writing
> clear code with \ inside of apostrophes and quotes:
>
> Always use \\ to get a literal backslash, and you'll never get confused,
> because \\ always means one (1) backslash.
>

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация