rfc:preg_replace_callback_array

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
Next revisionBoth sides next revision
rfc:preg_replace_callback_array [2015/03/10 13:25] – created demonrfc:preg_replace_callback_array [2015/03/10 13:53] demon
Line 1: Line 1:
-====== PHP RFC: Your Title Here ======+====== PHP RFC: Add preg_replace_callback_array function ======
   * Version: 1.0   * Version: 1.0
   * Date: 2015-03-10   * Date: 2015-03-10
Line 7: Line 7:
  
 ===== Introduction ===== ===== Introduction =====
-The preg_replace_callback_array function is an extension to preg_replace_callbackWith the functioneach pattern can easily have specific callback+Before 5.5.0we can use the '/e' modifier. Here is piece of code with 5.4.x:  
- +<code php Zend/zend_vm_gen.php> 
-This is the best way to implement when there are multiple patterns.+$code = preg_replace( 
 +                array( 
 +                    "/EXECUTE_DATA/m", 
 +                    "/ZEND_VM_DISPATCH_TO_HANDLER\(\s*([A-Z_]*)\s*\)/m", 
 +                    "/ZEND_VM_DISPATCH_TO_HELPER\(\s*([A-Za-z_]*)\s*\)/me", 
 +                    "/ZEND_VM_DISPATCH_TO_HELPER_EX\(\s*([A-Za-z_]*)\s*,\s*[A-Za-z_]*\s*,\s*(.*)\s*\);/me", 
 +                ), 
 +                array( 
 +                    "execute_data", 
 +                    "return \\1".($spec?"_SPEC":"").$prefix[$op1].$prefix[$op2]."_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU)", 
 +                    "'return '.helper_name('\\1',$spec,'$op1','$op2').'(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU)'", 
 +                    "'return '.helper_name('\\1',$spec,'$op1','$op2').'(\\2, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);'", 
 +                ),    
 +                $code); 
 +</code>
  
-===== Proposal ===== +Since 5.5.0, we deprecated the /e modifierso we have to change it to: 
-Below is the previous codewhich is from Zend/zend_vm_gen.php. +<code php Zend/zend_vm_gen.php>
- +
-<code php>+
 $code = preg_replace_callback( $code = preg_replace_callback(
     array(     array(
Line 34: Line 46:
     }, $code);     }, $code);
 </code> </code>
 +
 +===== Proposal =====
 +The preg_replace_callback_array function is an extension to preg_replace_callback. With the function, each pattern can easily have a specific callback.
 +
 +This is the best way to implement when there are multiple patterns.
  
 With preg_replace_callback_array, the code is more readable, and full of logic. There is less crazy branch determination. With preg_replace_callback_array, the code is more readable, and full of logic. There is less crazy branch determination.
  
-<code php>+With the preg_replace_callback_array function, the code is: 
 +<code php Zend/zend_vm_gen.php>
 $code = preg_replace_callback_array( $code = preg_replace_callback_array(
  array(  array(
Line 59: Line 77:
  
 ===== Proposed PHP Version(s) ===== ===== Proposed PHP Version(s) =====
->= PHP 7.0.0+This is proposed for PHP7
  
 ===== Unaffected PHP Functionality ===== ===== Unaffected PHP Functionality =====
rfc/preg_replace_callback_array.txt · Last modified: 2017/09/22 13:28 by 127.0.0.1