Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
[navy]$text[/navy][teal]=[/teal][COLOR=darkgoldenrod]preg_replace[/color][teal]([/teal][green][i]',(<a\b.*?>)x(</a>),'[/i][/green][teal],[/teal][green][i]'\\1y\\2'[/i][/green][teal],[/teal][navy]$text[/navy][teal]);[/teal]
//to find the expression foobar NOT within a link
$pattern = '/foobar\s*(?!<\/a>)/i';
/*
examples:
The foobar went awry = MATCH
The <a href='whatever'>foobar</a> = NO MATCH
The <a href="whatever'> foobar </a> = NO MATCH
The <span style="buzz">foobar</span> = MATCH
*/
[navy]$test[/navy][teal]=[/teal][COLOR=darkgoldenrod]preg_replace_callback[/color][teal]([/teal][green][i]',(<?[^<]*?)x([^>]*>?),'[/i][/green][teal],[/teal][green][i]'hmm'[/i][/green][teal],[/teal][navy]$test[/navy][teal]);[/teal]
[b]function[/b] [COLOR=darkgoldenrod]hmm[/color][teal]([/teal][navy]$m[/navy][teal])[/teal]
[teal]{[/teal]
[b]if[/b] [teal]([/teal][COLOR=darkgoldenrod]preg_match[/color][teal]([/teal][green][i]',<a\b.*?>,'[/i][/green][teal],[/teal][navy]$m[/navy][teal][[/teal][purple]1[/purple][teal]])[/teal] [teal]&&[/teal] [COLOR=darkgoldenrod]preg_match[/color][teal]([/teal][green][i]',</a>,'[/i][/green][teal],[/teal][navy]$m[/navy][teal][[/teal][purple]2[/purple][teal]]))[/teal] [b]return[/b] [navy]$m[/navy][teal][[/teal][purple]0[/purple][teal]];[/teal]
[b]return[/b] [navy]$m[/navy][teal][[/teal][purple]1[/purple][teal]].[/teal][green][i]'y'[/i][/green][teal].[/teal][navy]$m[/navy][teal][[/teal][purple]2[/purple][teal]];[/teal]
[teal]}[/teal]
Huh ? That is just regular expression. The only difference is that you can perform more operations on the captured groups because the user function receives an array with them.Sleidia said:decipher feherke's solution
[navy]$test[/navy][teal]=[/teal][green][i]'Hello World'[/i][/green][teal];[/teal]
[gray]// 1[/gray]
[b]echo[/b] [COLOR=darkgoldenrod]preg_replace[/color][teal]([/teal][green][i]'/([aeiou])/'[/i][/green][teal],[/teal][green][i]'(\\1)'[/i][/green][teal],[/teal][navy]$test[/navy][teal]),[/teal][green][i]"\n"[/i][/green][teal];[/teal]
[gray]// 2[/gray]
[b]echo[/b] [COLOR=darkgoldenrod]preg_replace_callback[/color][teal]([/teal][green][i]'/([aeiou])/'[/i][/green][teal],[/teal][COLOR=darkgoldenrod]create_function[/color][teal]([/teal][green][i]'$what'[/i][/green][teal],[/teal][green][i]'return "(".$what[1].")";'[/i][/green][teal]),[/teal][navy]$test[/navy][teal]),[/teal][green][i]"\n"[/i][/green][teal];[/teal]
[gray]// 3[/gray]
[b]echo[/b] [COLOR=darkgoldenrod]preg_replace_callback[/color][teal]([/teal][green][i]'/([aeiou])/'[/i][/green][teal],[/teal][green][i]'gotthis'[/i][/green][teal],[/teal][navy]$test[/navy][teal]),[/teal][green][i]"\n"[/i][/green][teal];[/teal]
[b]function[/b] [COLOR=darkgoldenrod]gotthis[/color][teal]([/teal][navy]$what[/navy][teal])[/teal]
[teal]{[/teal]
[b]return[/b] [green][i]'('[/i][/green][teal].[/teal][navy]$what[/navy][teal][[/teal][purple]1[/purple][teal]].[/teal][green][i]')'[/i][/green][teal];[/teal]
[teal]}[/teal]
H(e)ll(o) W(o)rld
H(e)ll(o) W(o)rld
H(e)ll(o) W(o)rld
test[teal]=[/teal][green][i]'Hello World'[/i][/green]
[gray]// 1[/gray]
[COLOR=darkgoldenrod]alert[/color][teal]([/teal]test[teal].[/teal][COLOR=darkgoldenrod]replace[/color][teal]([/teal][fuchsia]/([aeiou])/g[/fuchsia][teal],[/teal][green][i]'($1)'[/i][/green][teal]))[/teal]
[gray]// 2[/gray]
[COLOR=darkgoldenrod]alert[/color][teal]([/teal]test[teal].[/teal][COLOR=darkgoldenrod]replace[/color][teal]([/teal][fuchsia]/([aeiou])/g[/fuchsia][teal],[/teal][b]function[/b][teal]([/teal]p0[teal],[/teal]p1[teal])[/teal][teal]{[/teal][b]return[/b] [green][i]'('[/i][/green][teal]+[/teal]p1[teal]+[/teal][green][i]')'[/i][/green][teal]}[/teal][teal]))[/teal]
[gray]// 3[/gray]
[b]function[/b] [COLOR=darkgoldenrod]gotthis[/color][teal]([/teal]p0[teal],[/teal]p1[teal])[/teal]
[teal]{[/teal]
[b]return[/b] [green][i]'('[/i][/green][teal]+[/teal]p1[teal]+[/teal][green][i]')'[/i][/green]
[teal]}[/teal]
[COLOR=darkgoldenrod]alert[/color][teal]([/teal]test[teal].[/teal][COLOR=darkgoldenrod]replace[/color][teal]([/teal][fuchsia]/([aeiou])/g[/fuchsia][teal],[/teal]gotthis[teal]))[/teal]
Vaguely.jpadie said:how do you determine using the callback whether the captured target is within an hyperlink?
[navy]$text[/navy][teal]=<<<[/teal]ENDOFTEXT
I love Perl and PHP.
I learned <a href="[URL unfurl="true"]http://perl.org/">Perl</a>[/URL] long before <a href="[URL unfurl="true"]http://php.net/">PHP</a>.[/URL]
<b>PHP</b>'s documentation became noob friendly before <a href="[URL unfurl="true"]http://perldoc.perl.org/"><b>Perl</b></a>'s.[/URL]
Hovewer, <a href="[URL unfurl="true"]http://cpan.org/">Perl[/URL] and Perl's module repository</a> is still unbeatable.
ENDOFTEXT[teal];[/teal]
[navy]$term[/navy][teal]=[/teal][b]array[/b][teal]([/teal]
[green][i]'Perl'[/i][/green][teal]=>[/teal][green][i]'/my/perl/scripts'[/i][/green][teal],[/teal]
[green][i]'PHP'[/i][/green][teal]=>[/teal][green][i]'/my/php/scripts'[/i][/green]
[teal]);[/teal]
[b]echo[/b] [green][i]"- - ORIGINAL - -\n$text\n"[/i][/green][teal];[/teal]
[navy]$orig[/navy][teal]=[/teal][b]array[/b][teal]();[/teal]
[navy]$text[/navy][teal]=[/teal][COLOR=darkgoldenrod]preg_replace_callback[/color][teal]([/teal][green][i]',<a\b.*?>.*?</a>,'[/i][/green][teal],[/teal][green][i]'getlink'[/i][/green][teal],[/teal][navy]$text[/navy][teal]);[/teal]
[b]foreach[/b] [teal]([/teal][navy]$term[/navy] [b]as[/b] [navy]$word[/navy][teal]=>[/teal][navy]$link[/navy][teal])[/teal]
[navy]$text[/navy][teal]=[/teal][COLOR=darkgoldenrod]str_replace[/color][teal]([/teal][navy]$word[/navy][teal],[/teal][green][i]"<a href=\"$link\">$word</a>"[/i][/green][teal],[/teal][navy]$text[/navy][teal]);[/teal]
[b]foreach[/b] [teal]([/teal][navy]$orig[/navy] [b]as[/b] [navy]$number[/navy][teal]=>[/teal][navy]$link[/navy][teal])[/teal]
[navy]$text[/navy][teal]=[/teal][COLOR=darkgoldenrod]str_replace[/color][teal]([/teal][green][i]"{LINK$number}"[/i][/green][teal],[/teal][navy]$link[/navy][teal],[/teal][navy]$text[/navy][teal]);[/teal]
[b]function[/b] [COLOR=darkgoldenrod]getlink[/color][teal]([/teal][navy]$match[/navy][teal])[/teal]
[teal]{[/teal]
[b]global[/b] [navy]$orig[/navy][teal];[/teal]
[navy]$orig[/navy][teal][]=[/teal][navy]$match[/navy][teal][[/teal][purple]0[/purple][teal]];[/teal]
[b]return[/b] [green][i]'{LINK'[/i][/green][teal].([/teal][COLOR=darkgoldenrod]count[/color][teal]([/teal][navy]$orig[/navy][teal])-[/teal][purple]1[/purple][teal]).[/teal][green][i]'}'[/i][/green][teal];[/teal]
[teal]}[/teal]
[b]echo[/b] [green][i]"- - MODIFIED - -\n$text\n"[/i][/green][teal];[/teal]
[small]- - ORIGINAL - -
I love Perl and PHP.
I learned <a href="[URL unfurl="true"]http://perl.org/">Perl</a>[/URL] long before <a href="[URL unfurl="true"]http://php.net/">PHP</a>.[/URL]
<b>PHP</b>'s documentation became noob friendly before <a href="[URL unfurl="true"]http://perldoc.perl.org/"><b>Perl</b></a>'s.[/URL]
Hovewer, <a href="[URL unfurl="true"]http://cpan.org/">Perl[/URL] and Perl's module repository</a> is still unbeatable.
- - MODIFIED - -
I love <a href="/my/perl/scripts">Perl</a> and <a href="/my/php/scripts">PHP</a>.
I learned <a href="[URL unfurl="true"]http://perl.org/">Perl</a>[/URL] long before <a href="[URL unfurl="true"]http://php.net/">PHP</a>.[/URL]
<b><a href="/my/php/scripts">PHP</a></b>'s documentation became noob friendly before <a href="[URL unfurl="true"]http://perldoc.perl.org/"><b>Perl</b></a>'s.[/URL]
Hovewer, <a href="[URL unfurl="true"]http://cpan.org/">Perl[/URL] and Perl's module repository</a> is still unbeatable.[/small]