Re: Catch line indetation
| From: | Christoph M. Becker | Date: | Mon, 31 Oct 2016 13:14:00 +0000 |
| Subject: | Re: Catch line indetation | ||
| References: | 1 2 3 4 5 6 7 8 9 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-325807@lists.php.net to get a copy of this message | ||
On 29.10.2016 at 07:40, David Harkness wrote:
> On Fri, Oct 28, 2016 at 7:37 PM, German Geek <geek.de@gmail.com> 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