diff --git a/reference/pcre/functions/preg-replace-callback.xml b/reference/pcre/functions/preg-replace-callback.xml index 1a41885e97..3d09929c46 100644 --- a/reference/pcre/functions/preg-replace-callback.xml +++ b/reference/pcre/functions/preg-replace-callback.xml @@ -1,104 +1,100 @@ - + - - - preg_replace_callback - Perform a regular expression search and replace using a callback - - - Description - - mixedpreg_replace_callback - mixedpattern - callbackcallback - mixedsubject - intlimit - - - The behavior of this function is almost identical to - preg_replace, except for the fact that instead of - replacement parameter, one should specify a - callback that will be called and passed an array of - matched elements in the subject string. The callback should return the - replacement string. - - - <function>preg_replace_callback</function> example - + + + preg_replace_callback + Perform a regular expression search and replace using a callback + + + Description + + mixedpreg_replace_callback + mixedpattern + callbackcallback + mixedsubject + intlimit + + + The behavior of this function is almost identical to + preg_replace, except for the fact that instead of + replacement parameter, one should specify a + callback that will be called and passed an array of + matched elements in the subject string. The callback should return the + replacement string. + + + <function>preg_replace_callback</function> example + ]]> - - - - You'll often need the callback function - for a preg_replace_callback in just one place. - In this case you can use create_function to - declare an anonymous function as callback within the call to - preg_replace_callback. By doing it this way - you have all information for the call in one place and do not - clutter the function namespace with a callback functions name - not used anywhere else. - - - <function>preg_replace_callback</function> and <function>create_function</function> - + + + + You'll often need the callback function + for a preg_replace_callback in just one place. + In this case you can use create_function to + declare an anonymous function as callback within the call to + preg_replace_callback. By doing it this way + you have all information for the call in one place and do not + clutter the function namespace with a callback functions name + not used anywhere else. + + + <function>preg_replace_callback</function> and <function>create_function</function> + \s*\w|', - create_function( - // single quotes are essential here, - // or alternative escape all $ as \$ - '$matches', - 'return strtolower($matches[0]);' - ), - $line - ); - echo $line; - } - fclose($fp); +/* a unix-style command line filter to convert uppercase + * letters at the beginning of paragraphs to lowercase */ +$fp = fopen("php://stdin", "r") or die("can't read stdin"); +while (!feof($fp)) { + $line = fgets($fp); + $line = preg_replace_callback( + '|

\s*\w|', + create_function( + // single quotes are essential here, + // or alternative escape all $ as \$ + '$matches', + 'return strtolower($matches[0]);' + ), + $line + ); + echo $line; +} +fclose($fp); ?> ]]> - - - - See also preg_replace, - create_function, - &listendand; &seealso.callback;. - - - + + + + See also preg_replace, + create_function, + &listendand; &seealso.callback;. + + + + - - - preg_replace - Perform a regular expression search and replace - - - Description - - mixedpreg_replace - mixedpattern - mixedreplacement - mixedsubject - intlimit - - - Searches subject for matches to - pattern and replaces them with - replacement. If - limit is specified, then only - limit matches will be replaced; if - limit is omitted or is -1, then all - matches are replaced. - - - Replacement may contain references of the form - \\n or (since PHP 4.0.4) - $n, with the latter form - being the preferred one. Every such reference will be replaced by the text - captured by the n'th parenthesized pattern. - n can be from 0 to 99, and - \\0 or $0 refers to the text matched - by the whole pattern. Opening parentheses are counted from left to right - (starting from 1) to obtain the number of the capturing subpattern. - - - When working with a replacement pattern where a backreference is immediately - followed by another number (i.e.: placing a literal number immediately - after a matched pattern), you cannot use the familiar \\1 - notation for your backreference. \\11, for example, - would confuse preg_replace since it does not know whether - you want the \\1 backreference followed by a literal 1, - or the \\11 backreference followed by nothing. In this case - the solution is to use \${1}1. This creates an - isolated $1 backreference, leaving the 1 - as a literal. - - - - Using backreferences followed by numeric literals - + + + preg_replace + Perform a regular expression search and replace + + + Description + + mixedpreg_replace + mixedpattern + mixedreplacement + mixedsubject + intlimit + + + Searches subject for matches to + pattern and replaces them with + replacement. If + limit is specified, then only + limit matches will be replaced; if + limit is omitted or is -1, then all + matches are replaced. + + + Replacement may contain references of the form + \\n or (since PHP 4.0.4) + $n, with the latter form + being the preferred one. Every such reference will be replaced by the text + captured by the n'th parenthesized pattern. + n can be from 0 to 99, and + \\0 or $0 refers to the text matched + by the whole pattern. Opening parentheses are counted from left to right + (starting from 1) to obtain the number of the capturing subpattern. + + + When working with a replacement pattern where a backreference is immediately + followed by another number (i.e.: placing a literal number immediately + after a matched pattern), you cannot use the familiar \\1 + notation for your backreference. \\11, for example, + would confuse preg_replace since it does not know whether + you want the \\1 backreference followed by a literal 1, + or the \\11 backreference followed by nothing. In this case + the solution is to use \${1}1. This creates an + isolated $1 backreference, leaving the 1 + as a literal. + + + + Using backreferences followed by numeric literals + ]]> - - - This example will output : - - + + + This example will output : + + - - - - - If matches are found, the new subject will - be returned, otherwise subject will be - returned unchanged. - - - Every parameter to preg_replace (except - limit) can be an unidimensional array. - When using arrays with pattern and - replacement, the keys are processed in the order - they appear in the array. This is not necessarily - the same as the numerical index order. If you use indexes to identify - which pattern should be replaced by which - replacement, you should perform a - ksort on each array prior to calling - preg_replace. - - - - Using indexed arrays with <function>preg_replace</function> - + + + + + If matches are found, the new subject will + be returned, otherwise subject will be + returned unchanged. + + + Every parameter to preg_replace (except + limit) can be an unidimensional array. + When using arrays with pattern and + replacement, the keys are processed in the order + they appear in the array. This is not necessarily + the same as the numerical index order. If you use indexes to identify + which pattern should be replaced by which + replacement, you should perform a + ksort on each array prior to calling + preg_replace. + + + + Using indexed arrays with <function>preg_replace</function> + ]]> - - - Output: - - + + + Output: + + - - - By ksorting patterns and replacements, we should get what we wanted. - - + + + By ksorting patterns and replacements, we should get what we wanted. + + ]]> - - - Output : - - + + + Output : + + - - - - - If subject is an array, then the search - and replace is performed on every entry of - subject, and the return value is an array - as well. - - - If pattern and replacement - are arrays, then preg_replace takes a value from - each array and uses them to do search and replace on - subject. If replacement - has fewer values than pattern, then empty string - is used for the rest of replacement values. If pattern - is an array and replacement is a - string, then this replacement string is used for every value of - pattern. The converse would not make sense, - though. - - - The e modifier makes preg_replace - treat the replacement parameter as PHP code after - the appropriate references substitution is done. Tip: make sure that - replacement constitutes a valid PHP code string, - otherwise PHP will complain about a parse error at the line containing - preg_replace. - - - - Replacing several values - + + + + + If subject is an array, then the search + and replace is performed on every entry of + subject, and the return value is an array + as well. + + + If pattern and replacement + are arrays, then preg_replace takes a value from + each array and uses them to do search and replace on + subject. If replacement + has fewer values than pattern, then empty string + is used for the rest of replacement values. If pattern + is an array and replacement is a + string, then this replacement string is used for every value of + pattern. The converse would not make sense, + though. + + + The e modifier makes preg_replace + treat the replacement parameter as PHP code after + the appropriate references substitution is done. Tip: make sure that + replacement constitutes a valid PHP code string, + otherwise PHP will complain about a parse error at the line containing + preg_replace. + + + + Replacing several values + ]]> - - - This example will produce: - - + + + This example will produce: + + - - - - - - Using the 'e' modifier - + + + + + + Using the 'e' modifier + ]*>)/e", - "'\\1'.strtoupper('\\2').'\\3'", - $html_body); + "'\\1'.strtoupper('\\2').'\\3'", + $html_body); ?> ]]> - - - This would capitalize all HTML tags in the input text. - - - + - - Convert HTML to text - + This would capitalize all HTML tags in the input text. + + + + + + Convert HTML to text + ]*?>.*?'si", // Strip out javascript - "'<[\/\!]*?[^<>]*?>'si", // Strip out HTML tags - "'([\r\n])[\s]+'", // Strip out white space - "'&(quot|#34);'i", // Replace HTML entities - "'&(amp|#38);'i", - "'&(lt|#60);'i", - "'&(gt|#62);'i", - "'&(nbsp|#160);'i", - "'&(iexcl|#161);'i", - "'&(cent|#162);'i", - "'&(pound|#163);'i", - "'&(copy|#169);'i", - "'&#(\d+);'e"); // evaluate as php - + "'<[\/\!]*?[^<>]*?>'si", // Strip out HTML tags + "'([\r\n])[\s]+'", // Strip out white space + "'&(quot|#34);'i", // Replace HTML entities + "'&(amp|#38);'i", + "'&(lt|#60);'i", + "'&(gt|#62);'i", + "'&(nbsp|#160);'i", + "'&(iexcl|#161);'i", + "'&(cent|#162);'i", + "'&(pound|#163);'i", + "'&(copy|#169);'i", + "'&#(\d+);'e"); // evaluate as php $replace = array ("", - "", - "\\1", - "\"", - "&", - "<", - ">", - " ", - chr(161), - chr(162), - chr(163), - chr(169), - "chr(\\1)"); - + "", + "\\1", + "\"", + "&", + "<", + ">", + " ", + chr(161), + chr(162), + chr(163), + chr(169), + "chr(\\1)"); $text = preg_replace($search, $replace, $document); ?> ]]> - - - + + + + + + Strip whitespace - - Strip whitespace - - This example strips excess whitespace from a string. - - + This example strips excess whitespace from a string. + + ]]> - - - - - - Parameter limit was added after PHP 4.0.1pl2. - - - - See also preg_match, - preg_match_all, and - preg_split. - - - + + + + + + Parameter limit was added after PHP 4.0.1pl2. + + + + See also preg_match, + preg_match_all, and + preg_split. + + +