What is pattern mean in PHP:
'#^/abc/(?P<abc>[^/]++)$#si'; // please expand this pattern's meaning.
and what are strings can match of this pattern with preg_match_all?
What is pattern mean in PHP:
'#^/abc/(?P<abc>[^/]++)$#si'; // please expand this pattern's meaning.
and what are strings can match of this pattern with preg_match_all?
 
    
     
    
    This pattern '#^/abc/(?P<abc>[^/]++)$#si'; broken down like so:
/^\/abc\/(?P<abc>[^\/]++)$/si ^ assert position at start of the string \/ matches the character / literally abc matches the characters abc literally (case insensitive) \/ matches the character / literally (?P<abc>[^\/]++) Named capturing group abc [^\/]++ match a single character not present in the list below Quantifier: Between one and unlimited times, as many times as possible, without giving back [possessive] \/ matches the character / literally $ assert position at end of the string s modifier: single line. Dot matches newline characters i modifier: insensitive. Case insensitive match (ignores case of [a-zA-Z])
(Source: http://regex101.com/r/hS6qE3 -- make sure you escape your / on the site as it assumes / is the php delimiter. In your pattern example, # is the delimiter instead, which is then wrapped in quotes and the string terminator ;. The actual expression is simply ^/abc/(?P<abc>[^/]++)$ with the single-line and case insensitive modifiers.)
Note the use of two ++ signs as well, which changes the behavior from greedy to possessive.
An example of a string that will match:
/abc/somethingelsenotafrontslash
You can read a quick explanation about preg_match_all here
 
    
    