String functions are very fast. Regexes have to be compiled under the hood to take advantage of their speed. PHP does this behind the scenes. So, if you are only looking for spaces it's going to run faster in my humble opinion. However, I agree that regexes are probably better in any case, because they are much more powerful and for someone who understands them, just as easy to read if not easier, especially in this example. The difference in performance is probably not noticeable, especially not nowadays. Saving developer time is more important and I would use regexes as well. I could be wrong about regexes being slower. It's just what I read somewhere. I guess one would have to do the test on a large input to verify on a case by case basis. As far as I understand regexes have to perform string functions also, which I think are probably more complicated than in this example. Again, something to test. I would want to know, just out of interest though. :-) On Sat, 29 Oct 2016 at 12:40 Ashley Sheridan <ash@xxxxxxxxxxxxxxxxxxxx> wrote: > > > On 28 October 2016 23:33:00 BST, German Geek <geek.de@xxxxxxxxx> wrote: > >regex is nicer, because it is less code and you can detect any white > >space > >etc. > > > >However! > > > >substring etc will be faster and more understandable to others who do > >not > >know much about regexes. > > > >On Sat, 29 Oct 2016 at 02:21 Christoph M. Becker <cmbecker69@xxxxxx> > >wrote: > > > >> On 28.10.2016 at 14:51, Richard wrote: > >> > >> >> Date: Friday, October 28, 2016 12:09:31 +0100 > >> >> From: Ashley Sheridan <ash@xxxxxxxxxxxxxxxxxxxx> > >> >> > >> >> On 28 October 2016 12:01:16 BST, Narcis Garcia > >> >> <informatica@xxxxxxxxx> wrote: > >> >> > >> >>> Hello, I have a string (I quote here only) as: > >> >>> > >> >>> ' <table>...</table>' > >> >>> > >> >>> As you can see there are 3 spaces at the beginning, but it could > >> >>> be 0 or > >> >>> 4 or any number of spaces. > >> >>> How can I get a string with only the initial spaces part? > >> >>> > >> >>> ' <table>...</table>' -> ' ' > >> >>> 'hello' -> '' > >> >>> ' hello' -> ' ' > >> >>> > >> >>> Thanks. > >> >> > >> >> Have you tried regular expressions? Something like: > >> >> > >> >> ^( )*[^ ] > >> >> > >> >> The first captured match is the number of spaces, from 0 to any > >> >> amount. Not the space between the brackets and before the closing > >> >> square bracket > >> > > >> > You need to take into consideration that "whitespace" can be > >created > >> > by more than the simple "space" (ascii 32) character. A > >"[horizontal] > >> > tab" (ascii 9) is common, but also look at the top of php trim > >> > function documentation: > >> > > >> > <http://php.net/manual/en/function.trim.php> > >> > > >> > to see the characters that it handles as "whitespace". > >> > >> If general whitespace should be detected with a regexp, \s could be > >used. > >> > >> > While "trim" > >> > does the opposite of what you're after, […] > >> > >> Indeed, so one could do something like > >> > >> substr($string, 0, strlen($string) - strlen(ltrim($string))) > >> > >> I'd prefer a regexp solution, though. > >> > >> -- > >> Christoph M. Becker > >> > >> > >> -- > >> PHP General Mailing List (http://www.php.net/) > >> To unsubscribe, visit: http://www.php.net/unsub.php > >> > >> > > I really don't think performing two strlen() calls, a substr(), & an > ltrim() is going to be faster than a regular expression. > > I don't think you should avoid regex's because some people don't > understand them. It's a very simple regular expression. You wouldn't tell > someone to avoid PDO and use mysql_* functions because PDO is too > complicated for some people would you? > -- > Sent from my Android device with K-9 Mail. Please excuse my brevity. >