Tuesday 23 January 2018

Preg replace callback example

Regular expressions can be very powerful, this example shows how to use the preg_replace_callback function.

// Define a dummy text, for testing...
$Text  = "Title: Hello world!\n";
$Text .= "Author: Jonas\n";
$Text .= "This is a example message!\n\n";
$Text .= "Title: Entry 2\n";
$Text .= "Author: Sonja\n";
$Text .= "Hello world, what's up!\n";

// This function will replace specific matches
// into a new form
function RewriteText($Match){

    // Entire matched section:
    // --> /.../
    $EntireSection  = $Match[0];
    // --> "\nTitle: Hello world!"

    // Key
    // --> ([a-z0-9]+)
    $Key            = $Match[1];
    // --> "Title"

    // Value
    // --> ([^\n\r]+)
    $Value        = $Match[2];
    // --> "Hello world!"

    // Add some bold (<b>) tags to around the key to
    return '<b>' . $Key . '</b>: ' . $Value;
}

// The regular expression will extract and pass all "key: value" pairs to
// the "RewriteText" function that is definied above
$NewText = preg_replace_callback('/[\r\n]([a-z0-9]+): ([^\n\r]+)/i', "RewriteText", $Text);

// Print the new modified text
print $NewText;

0 comments:

Post a Comment