PHP/String/preg replace callback

Материал из Web эксперт
Перейти к: навигация, поиск

Generating replacement strings with a callback function

 
<?php
$html = "The &lt;b&gt; tag makes text bold: <code>&lt;b&gt;bold&lt;/b&gt;</code>";
print preg_replace_callback("@<code>(.*?)</code>@","decode", $html);
function decode($matches) {
    return html_entity_decode($matches[1]);
}
?>



Generating replacement strings with an anonymous function

 
<?php
$callbackFunction = create_function("$matches","return html_entity_decode($matches[1]);");
$fp = fopen("html-to-decode.html","r");
while (! feof($fp)) {
    $line = fgets($fp);
    print preg_replace_callback("@<code>(.*?)</code>@",$callbackFunction, $line);
}
fclose($fp);
?>



Using preg_replace_callback() to Replace Patterns

 
preg_replace_callback() allows you to assign a callback function. 
preg_replace_callback() requires a regular expression, 
                                 a reference to a callback function, 
                                 and the string to be analyzed. 
<?
function convDate( $matches ) {
  $year = ($year < 70 )?$matches[3]+2000:$matches[3];
  $time = ( mktime( 0,0,0,$matches[1],$matches[2],$matches[3]) );
  return date("l d F Y", $time);
}
$dates = "3/18/03<br />\n7/22/04";
$dates = preg_replace_callback( "/([0-9]+)\/([0-9]+)\/([0-9]+)/","convDate", $dates);
print $dates;
?>