5

Some native PHP string functions have a parameter which is a string of one or more unordered characters (also referred to as a "character mask"). In some cases, character ranges can be expressed using double-dot syntax.

For example: echo trim('foo24', '0..9'); prints foo because 2 and 4 fall within the 0 through 9 range.

What are the other native PHP string functions with the same feature?

0

1 Answer 1

9

Native PHP string functions that respect double-dot range expressions:

  • addcslashes() (Demo)

     echo addcslashes('adobe', 'a..e');
     // \a\do\b\e
    
  • chop() -- alias of rtrim() (Demo)

     echo chop('adobe', 'a..e');
     // ado
    
  • ltrim() (Demo)

     echo ltrim('adobe', 'a..e');
     // obe
    
  • rtrim() (Demo)

     echo rtrim('adobe', 'a..e');
     // ado
    
  • str_word_count() (Demo)

     var_export(
         str_word_count('do not break|on|pipe', 1, '{..}')
     );
     // ['do', 'not', 'break|on|pipe']
    
  • trim() (Demo)

     echo trim('adobe', 'a..e');
     // o
    
  • ucwords() (Demo)

     echo ucwords('backdoorman', 'a..e');
     // BaCkdOormaN
    

Here are some native functions where ranged expressions are not expanded, but might be reasonable candidates for the feature:

  • strcspn() (Demo) (expansion would be reasonable)

     echo strcspn('cdplayer', 'b..e');
     // 6
     // 0 if range enabled
    
  • strpbrk() (Demo) (expansion would be reasonable)

     echo strpbrk('stackoverflow', 'b..f');
     // flow
     // ckoverflow if range enabled
    
  • strspn() (Demo) (expansion would be reasonable)

     echo strspn('adobe', 'a..e');
     // 1
     // 2 if range enabled
    
  • strtok() (Demo) (expansion would be reasonable)

     echo strtok('toddler', 'a..e');
     // toddl
     // to if range enabled
    
  • strtr() (Demo) (out of topic scope because not technically a character mask -- character order matters)

     echo strtr('adobe', 'a..e', 'A..E');
     // AdobE
     // ADoBE if range enabled
    

Due to technical challenges of supporting .. syntax with multibyte characters, the following native functions will not allow ..
Ref: https://wiki.php.net/rfc/mb_trim

  • mb_ltrim()
  • mb_rtrim()
  • mb_trim()
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.