Re: [PHP-DEV] New string functions: str_startswith() and str_endswith()

2008-07-21 Thread Stan Vassilev | FM


Hi,

ucfirst() isn't solving a pain point either. But we use it all the time (I 
do at least).


I'm particularly for begins/endswith() function as I do this all over my 
code and I'd appreciate the simplification and free extra performance.


Regards,
Stan Vassilev

I agree that many existing functions can be implemented with a combination 
of others, but in this case it is really just one call.  The strlen() call 
is almost free, and in many cases you wouldn't even use it.  If you are 
looking for .php files, for example:


  if(str_endswith($path,'.php'))

vs.

  if(substr($path,-4)=='.php'))

I just don't see that this is solving any real painpoint.

-Rasmus


Stan Vassilev | FM wrote:


Hi,

Actually starts with and ends with is a very common case. I see your
concerns, but I can see instantly quite a lot of places in my code where
I'd use those. And I bet it'll be faster too.

Many of the string functions can be replicated with one-liners using
other string functions, same for array functions. I still think a very
common case should be addressed natively.

Regards,
Stan Vassilev


For the start of the string:

substr($haystack,0,strlen($needle)) == $needle

And for the end of the string:

substr($haystack,-strlen($needle)) == $needle

For case-insensitivity, just strtolower both.

Writing built-in functions for something that can be done with trivial
one-liners isn't something we typically do.

-Rasmus

Lars Strojny wrote:

Hi Martin,

first of all, thanks for you work! A few comments below.

Am Samstag, den 19.07.2008, 14:55 +0200 schrieb Martin Jansen:

Attached you'll find a patch against PHP_5_3 that implements two new
string functions:

str_startswith(haystack, needle [, case_sensitivity])


That's in my opinion too easy to solve with strpos($haystack, $needle)
=== 0.


checks if haystack starts with needle. The check is performed
case-insensitively, but this can be overridden by passing TRUE as the
value for the third parameter. The second function

str_endswith(haystack, needle [, case_sensitivity])

[...]

Suffix checking is indeed a bit harder. But I'm not sure if we should
introduce a function for every special case. Suffix verification often
is about verifying file extensions. That could be easily solved with
pathinfo() (and to make that easier, it would be more helpful to allow
the engine to directly access returned arrays like
pathinfo($file)['extension']). The other thing I would love to see is
something I really love in Ruby: you have various ways to work with
substrings[1]. For example you can do foobar[-3,3] == bar to check
the suffix. That's in my opinion much easier and flexible.

So -1 from me for the new string functions, but +1 for niftier variants
to work with offsets.

[1] http://pleac.sourceforge.net/pleac_ruby/strings.html

cu, Lars



--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php







--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php




--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



RE: [PHP-DEV] New string functions: str_startswith() and str_endswith()

2008-07-21 Thread Jared Williams

Surely substr_compare() does both begin  end easily enough.

Though the fact that it throws warnings is annoying.

Jared
 

 -Original Message-
 From: Stan Vassilev | FM [mailto:[EMAIL PROTECTED] 
 Sent: 21 July 2008 13:18
 To: internals
 Subject: Re: [PHP-DEV] New string functions: str_startswith() 
 and str_endswith()
 
 
 Hi,
 
 ucfirst() isn't solving a pain point either. But we use it 
 all the time (I do at least).
 
 I'm particularly for begins/endswith() function as I do this 
 all over my code and I'd appreciate the simplification and 
 free extra performance.
 
 Regards,
 Stan Vassilev
 
 I agree that many existing functions can be implemented with a 
 combination of others, but in this case it is really just one call.  
 The strlen() call is almost free, and in many cases you 
 wouldn't even 
 use it.  If you are looking for .php files, for example:
 
if(str_endswith($path,'.php'))
 
  vs.
 
if(substr($path,-4)=='.php'))
 
  I just don't see that this is solving any real painpoint.
 
  -Rasmus
 
 
  Stan Vassilev | FM wrote:
 
  Hi,
 
  Actually starts with and ends with is a very common case. 
 I see your 
  concerns, but I can see instantly quite a lot of places in my code 
  where I'd use those. And I bet it'll be faster too.
 
  Many of the string functions can be replicated with 
 one-liners using 
  other string functions, same for array functions. I still think a 
  very common case should be addressed natively.
 
  Regards,
  Stan Vassilev
 
  For the start of the string:
 
  substr($haystack,0,strlen($needle)) == $needle
 
  And for the end of the string:
 
  substr($haystack,-strlen($needle)) == $needle
 
  For case-insensitivity, just strtolower both.
 
  Writing built-in functions for something that can be done with 
  trivial one-liners isn't something we typically do.
 
  -Rasmus
 
  Lars Strojny wrote:
  Hi Martin,
 
  first of all, thanks for you work! A few comments below.
 
  Am Samstag, den 19.07.2008, 14:55 +0200 schrieb Martin Jansen:
  Attached you'll find a patch against PHP_5_3 that 
 implements two 
  new string functions:
 
  str_startswith(haystack, needle [, case_sensitivity])
 
  That's in my opinion too easy to solve with strpos($haystack, 
  $needle) === 0.
 
  checks if haystack starts with needle. The check is performed 
  case-insensitively, but this can be overridden by 
 passing TRUE as 
  the value for the third parameter. The second function
 
  str_endswith(haystack, needle [, case_sensitivity])
  [...]
 
  Suffix checking is indeed a bit harder. But I'm not sure if we 
  should introduce a function for every special case. Suffix 
  verification often is about verifying file extensions. 
 That could 
  be easily solved with
  pathinfo() (and to make that easier, it would be more helpful to 
  allow the engine to directly access returned arrays like 
  pathinfo($file)['extension']). The other thing I would 
 love to see 
  is something I really love in Ruby: you have various 
 ways to work 
  with substrings[1]. For example you can do 
 foobar[-3,3] == bar 
  to check the suffix. That's in my opinion much easier 
 and flexible.
 
  So -1 from me for the new string functions, but +1 for niftier 
  variants to work with offsets.
 
  [1] http://pleac.sourceforge.net/pleac_ruby/strings.html
 
  cu, Lars
 
 
  --
  PHP Internals - PHP Runtime Development Mailing List To 
 unsubscribe, 
  visit: http://www.php.net/unsub.php
 
 
 
 
 
  --
  PHP Internals - PHP Runtime Development Mailing List To 
 unsubscribe, 
  visit: http://www.php.net/unsub.php
  
 
 
 --
 PHP Internals - PHP Runtime Development Mailing List To 
 unsubscribe, visit: http://www.php.net/unsub.php
 


--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] New string functions: str_startswith() and str_endswith()

2008-07-21 Thread Brian Moon

Stan Vassilev | FM wrote:

I'm particularly for begins/endswith() function as I do this all over my
code and I'd appreciate the simplification and free extra performance.


I really don't mean to be rude here, but shorter and less typing !== 
performance gain.  The PHP string functions are very fast.  And if you 
are looking to improve your applications performance by using different 
string functions, you are likely looking in the wrong place.


--

Brian Moon
Senior Web Engineer
--
When you care enough to spend the very least.
http://dealnews.com/


--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] New string functions: str_startswith() and str_endswith()

2008-07-21 Thread Rasmus Lerdorf

Brian Moon wrote:

Stan Vassilev | FM wrote:

I'm particularly for begins/endswith() function as I do this all over my
code and I'd appreciate the simplification and free extra performance.


I really don't mean to be rude here, but shorter and less typing !==
performance gain. The PHP string functions are very fast. And if you are
looking to improve your applications performance by using different
string functions, you are likely looking in the wrong place.


It also isn't any shorter:

  if(str_endswith($path,'.php'))

  vs.

  if(substr($path,-4)=='.php')

And there would be no performance gain since it can be done in a single 
call now and the code would do pretty much exactly what substr does.


-Rasmus

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] New string functions: str_startswith() and str_endswith()

2008-07-21 Thread Stanislav Malyshev

Hi!


It also isn't any shorter:

  if(str_endswith($path,'.php'))

  vs.

  if(substr($path,-4)=='.php')


Doesn't substr allocate new string for .php? Then endswith can have 
one advantage of not requiring any new allocations. Not sure it's enough 
to add it, but a point here to consider.

--
Stanislav Malyshev, Zend Software Architect
[EMAIL PROTECTED]   http://www.zend.com/
(408)253-8829   MSN: [EMAIL PROTECTED]

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] New string functions: str_startswith() and str_endswith()

2008-07-21 Thread Paweł Stradomski
W liście Rasmus Lerdorf z dnia poniedziałek, 21 lipca 2008:
 It also isn't any shorter:

if(str_endswith($path,'.php'))

vs.

if(substr($path,-4)=='.php')

Only if comparing to a static string, but not for this case:

if (substr($path, -strlen($extension)) == $extension)

Readability would also increase.

-- 
Paweł Stradomski

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] New string functions: str_startswith() and str_endswith()

2008-07-21 Thread Jani Taskinen

Paweł Stradomski kirjoitti:

W liście Rasmus Lerdorf z dnia poniedziałek, 21 lipca 2008:

It also isn't any shorter:

   if(str_endswith($path,'.php'))

   vs.

   if(substr($path,-4)=='.php')


Only if comparing to a static string, but not for this case:

if (substr($path, -strlen($extension)) == $extension)

Readability would also increase.



You people are funny..

--Jani



--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] New string functions: str_startswith() and str_endswith()

2008-07-21 Thread D. Dante Lorenso

Jani Taskinen wrote:

Paweł Stradomski kirjoitti:

W liście Rasmus Lerdorf z dnia poniedziałek, 21 lipca 2008:

It also isn't any shorter:

   if(str_endswith($path,'.php'))

   vs.

   if(substr($path,-4)=='.php')


Only if comparing to a static string, but not for this case:

if (substr($path, -strlen($extension)) == $extension)
Readability would also increase.

You people are funny..


I'd like to have such a function in PHP, but when you think about how 
easy it is to create without bloating the PHP core, it's easy enough to 
do without it.  Here's what I do using my own string library:


  if (LS_Util_String :: ends_with($path, '.php')) {
   ...
  }

It's a bit longer, but all my functions are longer for good reason:
http://www.dantescode.com/2007/10/10/evolution-of-php-coder-naming-classes/

-- Dante

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] New string functions: str_startswith() and str_endswith()

2008-07-21 Thread Johannes Schlüter
On Mon, 2008-07-21 at 22:06 +0200, Paweł Stradomski wrote:
 W liście Rasmus Lerdorf z dnia poniedziałek, 21 lipca 2008:
  It also isn't any shorter:
 
 if(str_endswith($path,'.php'))
 
 vs.
 
 if(substr($path,-4)=='.php')
 
 Only if comparing to a static string, but not for this case:
 
 if (substr($path, -strlen($extension)) == $extension)

Then $extension is a CV which isn't that much slower in comparison as a
CONST, so from engine-performance-perspective: no big deal - spend your
time optimizing on other places where it has more effect than the time
you loose on teaching people about all the fancy string functions (where
we already have more than enough)

 Readability would also increase.

too many functions hurt more on readability imo ...

johannes


-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] New string functions: str_startswith() and str_endswith()

2008-07-20 Thread Stan Vassilev | FM


Hi,

Actually starts with and ends with is a very common case. I see your 
concerns, but I can see instantly quite a lot of places in my code where I'd 
use those. And I bet it'll be faster too.


Many of the string functions can be replicated with one-liners using other 
string functions, same for array functions. I still think a very common case 
should be addressed natively.


Regards,
Stan Vassilev


For the start of the string:

  substr($haystack,0,strlen($needle)) == $needle

And for the end of the string:

  substr($haystack,-strlen($needle)) == $needle

For case-insensitivity, just strtolower both.

Writing built-in functions for something that can be done with trivial 
one-liners isn't something we typically do.


-Rasmus

Lars Strojny wrote:

Hi Martin,

first of all, thanks for you work! A few comments below.

Am Samstag, den 19.07.2008, 14:55 +0200 schrieb Martin Jansen:

Attached you'll find a patch against PHP_5_3 that implements two new
string functions:

str_startswith(haystack, needle [, case_sensitivity])


That's in my opinion too easy to solve with strpos($haystack, $needle)
=== 0.


checks if haystack starts with needle. The check is performed
case-insensitively, but this can be overridden by passing TRUE as the
value for the third parameter. The second function

str_endswith(haystack, needle [, case_sensitivity])

[...]

Suffix checking is indeed a bit harder. But I'm not sure if we should
introduce a function for every special case. Suffix verification often
is about verifying file extensions. That could be easily solved with
pathinfo() (and to make that easier, it would be more helpful to allow
the engine to directly access returned arrays like
pathinfo($file)['extension']). The other thing I would love to see is
something I really love in Ruby: you have various ways to work with
substrings[1]. For example you can do foobar[-3,3] == bar to check
the suffix. That's in my opinion much easier and flexible.

So -1 from me for the new string functions, but +1 for niftier variants
to work with offsets.

[1] http://pleac.sourceforge.net/pleac_ruby/strings.html

cu, Lars



--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php




--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] New string functions: str_startswith() and str_endswith()

2008-07-20 Thread Rasmus Lerdorf
I agree that many existing functions can be implemented with a 
combination of others, but in this case it is really just one call.  The 
strlen() call is almost free, and in many cases you wouldn't even use 
it.  If you are looking for .php files, for example:


  if(str_endswith($path,'.php'))

vs.

  if(substr($path,-4)=='.php'))

I just don't see that this is solving any real painpoint.

-Rasmus


Stan Vassilev | FM wrote:


Hi,

Actually starts with and ends with is a very common case. I see your
concerns, but I can see instantly quite a lot of places in my code where
I'd use those. And I bet it'll be faster too.

Many of the string functions can be replicated with one-liners using
other string functions, same for array functions. I still think a very
common case should be addressed natively.

Regards,
Stan Vassilev


For the start of the string:

substr($haystack,0,strlen($needle)) == $needle

And for the end of the string:

substr($haystack,-strlen($needle)) == $needle

For case-insensitivity, just strtolower both.

Writing built-in functions for something that can be done with trivial
one-liners isn't something we typically do.

-Rasmus

Lars Strojny wrote:

Hi Martin,

first of all, thanks for you work! A few comments below.

Am Samstag, den 19.07.2008, 14:55 +0200 schrieb Martin Jansen:

Attached you'll find a patch against PHP_5_3 that implements two new
string functions:

str_startswith(haystack, needle [, case_sensitivity])


That's in my opinion too easy to solve with strpos($haystack, $needle)
=== 0.


checks if haystack starts with needle. The check is performed
case-insensitively, but this can be overridden by passing TRUE as the
value for the third parameter. The second function

str_endswith(haystack, needle [, case_sensitivity])

[...]

Suffix checking is indeed a bit harder. But I'm not sure if we should
introduce a function for every special case. Suffix verification often
is about verifying file extensions. That could be easily solved with
pathinfo() (and to make that easier, it would be more helpful to allow
the engine to directly access returned arrays like
pathinfo($file)['extension']). The other thing I would love to see is
something I really love in Ruby: you have various ways to work with
substrings[1]. For example you can do foobar[-3,3] == bar to check
the suffix. That's in my opinion much easier and flexible.

So -1 from me for the new string functions, but +1 for niftier variants
to work with offsets.

[1] http://pleac.sourceforge.net/pleac_ruby/strings.html

cu, Lars



--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php







--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] New string functions: str_startswith() and str_endswith()

2008-07-19 Thread Lars Strojny
Hi Martin,

first of all, thanks for you work! A few comments below.

Am Samstag, den 19.07.2008, 14:55 +0200 schrieb Martin Jansen:
 Attached you'll find a patch against PHP_5_3 that implements two new
 string functions:
 
 str_startswith(haystack, needle [, case_sensitivity])

That's in my opinion too easy to solve with strpos($haystack, $needle)
=== 0.

 checks if haystack starts with needle. The check is performed
 case-insensitively, but this can be overridden by passing TRUE as the
 value for the third parameter. The second function
 
 str_endswith(haystack, needle [, case_sensitivity])
[...]

Suffix checking is indeed a bit harder. But I'm not sure if we should
introduce a function for every special case. Suffix verification often
is about verifying file extensions. That could be easily solved with
pathinfo() (and to make that easier, it would be more helpful to allow
the engine to directly access returned arrays like
pathinfo($file)['extension']). The other thing I would love to see is
something I really love in Ruby: you have various ways to work with
substrings[1]. For example you can do foobar[-3,3] == bar to check
the suffix. That's in my opinion much easier and flexible.

So -1 from me for the new string functions, but +1 for niftier variants
to work with offsets.

[1] http://pleac.sourceforge.net/pleac_ruby/strings.html

cu, Lars


signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil


Re: [PHP-DEV] New string functions: str_startswith() and str_endswith()

2008-07-19 Thread Rasmus Lerdorf

For the start of the string:

  substr($haystack,0,strlen($needle)) == $needle

And for the end of the string:

  substr($haystack,-strlen($needle)) == $needle

For case-insensitivity, just strtolower both.

Writing built-in functions for something that can be done with trivial 
one-liners isn't something we typically do.


-Rasmus

Lars Strojny wrote:

Hi Martin,

first of all, thanks for you work! A few comments below.

Am Samstag, den 19.07.2008, 14:55 +0200 schrieb Martin Jansen:

Attached you'll find a patch against PHP_5_3 that implements two new
string functions:

str_startswith(haystack, needle [, case_sensitivity])


That's in my opinion too easy to solve with strpos($haystack, $needle)
=== 0.


checks if haystack starts with needle. The check is performed
case-insensitively, but this can be overridden by passing TRUE as the
value for the third parameter. The second function

str_endswith(haystack, needle [, case_sensitivity])

[...]

Suffix checking is indeed a bit harder. But I'm not sure if we should
introduce a function for every special case. Suffix verification often
is about verifying file extensions. That could be easily solved with
pathinfo() (and to make that easier, it would be more helpful to allow
the engine to directly access returned arrays like
pathinfo($file)['extension']). The other thing I would love to see is
something I really love in Ruby: you have various ways to work with
substrings[1]. For example you can do foobar[-3,3] == bar to check
the suffix. That's in my opinion much easier and flexible.

So -1 from me for the new string functions, but +1 for niftier variants
to work with offsets.

[1] http://pleac.sourceforge.net/pleac_ruby/strings.html

cu, Lars



--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php