<?<br> <br> print ": " . setLocale ( LC_ALL , 0 ) . "\n" ;<br> <br> /**<br> * preg_match_all<br> * @param string $comment <br> * @param string $pattern preg_match_all<br> * @param bool $usePatch <br> * @return void<br> */<br> <br> function preg_test ( $comment , $pattern , $usePatch = false ) {<br> <br> $test = "one three" ;<br> <br> print "\n<strong>{$comment}:</strong> <u>{$pattern}</u>\n" ;<br> <br> if ( $usePatch ) mb_preg_match_all ( $pattern , $test , $matches , PREG_OFFSET_CAPTURE );<br> else preg_match_all ( $pattern , $test , $matches , PREG_OFFSET_CAPTURE );<br> <br> foreach ( $matches [ 0 ] as $v ) print " : «{$v[0]}», : {$v[1]}\n" ;<br> <br> }<br> <br> /**<br> * , <br> */<br> <br> function mb_preg_match_all (<br> $ps_pattern ,<br> $ps_subject ,<br> & $pa_matches ,<br> $pn_flags = PREG_PATTERN_ORDER ,<br> $pn_offset = 0 ,<br> $ps_encoding = NULL<br> ) {<br> <br> // WARNING! - All this function does is to correct offsets, nothing else:<br> //(code is independent of PREG_PATTER_ORDER / PREG_SET_ORDER)<br> <br> if ( is_null ( $ps_encoding )) $ps_encoding = mb_internal_encoding ();<br> <br> $pn_offset = strlen ( mb_substr ( $ps_subject , 0 , $pn_offset , $ps_encoding ));<br> $ret = preg_match_all ( $ps_pattern , $ps_subject , $pa_matches , $pn_flags , $pn_offset );<br> <br> if ( $ret && ( $pn_flags & PREG_OFFSET_CAPTURE ))<br> foreach( $pa_matches as & $ha_match )<br> foreach( $ha_match as & $ha_match )<br> $ha_match [ 1 ] = mb_strlen ( substr ( $ps_subject , 0 , $ha_match [ 1 ]), $ps_encoding );<br> <br> return $ret ;<br> <br> }<br> <br> preg_test ( "« »" , "/[\w]+/i" );<br> preg_test ( "Character range" , "/[-a-z]+/i" );<br> preg_test ( "« » «/u»" , "/[\w]+/ui" );<br> preg_test ( "Character range «/u»" , "/[-a-z]+/ui" );<br> preg_test ( " «\pL», «/u»" , "/[\pL]+/i" );<br> preg_test ( " «\p{Cyrillic}», «/u»" , "/[\p{Cyrillic}]+/i" );<br> preg_test ( "(!) «\pL» " , "/[\pL]+/i" , true );<br> <br> $source = highlight_file ( __FILE__ , true );<br> <br> ?>
Source: https://habr.com/ru/post/45910/
All Articles