Re: Catch line indetation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 29.10.2016 at 07:40, David Harkness wrote:

> On Fri, Oct 28, 2016 at 7:37 PM, German Geek <geek.de@xxxxxxxxx> wrote:
> 
>> String functions are very fast. Regexes have to be compiled under the hood
>> to take advantage of their speed.
> 
> A lover of assembly language could hand-code a routine to "count leading
> whitespace of all known types" that would blow any other solution away.*
> But every developer who came across it over the next decade would have to
> learn it.**
> 
> Or you can write a function with unit tests so nobody ever has to read the
> gory details again.***
> 
>     /**
>      * Returns the leading whitespace from the given string or an empty
> string for all else.
>      *
>      * @param string $input converted to string if needed
>      * @return string the leading whitespace or empty string if none
>      */
>     function lspace($input) { // psuedably-cryptic c-style function name?
> check!
>         if ($input && ($input = (str) $input)) { // micro-optimization
> alert! no idea if this helps; totally defensive. kill?
>             if (preg_match('/^\s*/', $input, $matches)) { // ignore errors
> like a boss (actually, this is fine here)
>                 return $matches[0];
>             }
>         }
>         return ''; // Ask me a dumb question, get a dumb answer.
>     }
> 
>     [Awesome unit tests here] [1]

Very nice! :-)

> * This could be baked into the regex library too.
> ** You'd wrap it in a function where most readers would never see it.
> *** Did Unicode++ just drop? No problem, the PHP devs will fix preg_match
> and "\s" before you could ever notice. Stay on top of updates!
> **** Asterisk in regex is greedy so there's no need to find the end of the
> whitespace nor capture a portion of the match. Simplify!

Good catch!

> [1] http://ideone.com/PO2Xoq

-- 
Christoph M. Becker



-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux