Hello everyone i am writing a snippet for replacing the keywords into links.
It almost works but it also replaces the words in between HTML Tags
So can anyone help me in fixing that

<?php
$textlinksname = 'Google';
$textlinksurl = 'http://google.com';
$body = 'Google is a great search engine. Here is the logo of it <img src =\'http://www.google.co.in/google/images/srpr/logo1w.png\'/>';

$replace = "<a href='".$textlinksurl."' target='_blank'>".$textlinksname."</a>";
$body = preg_replace('~(?<!http://|www\.|/)'.$textlinksname.'~i', $replace,$body,200);

echo $body;
?>

It outputs as

<a href='http://google.com' target='_blank'>Google</a> is a great search engine. Here is the logo of it
 <img src ='http://www.google.co.in/google/intl/en_com/images/srpr/google-123-<a href='http://google.com' target='_blank'>Google</a>.png'/>

But i need output like this such that it wont mess with HTML Tags

<a href='http://google.com' target='_blank'>Google</a> is a great search engine. Here is the logo of it
 <img src ='http://www.google.co.in/google/intl/en_com/images/srpr/google-123-Google.png'/>

Can anyone help me on how to prevent that???

Thanks in advance :)

Recommended Answers

All 3 Replies

Any Replies please :)

i think its this "/" added not sure
preg_replace('/~(?<!http://|www\.|/)'.$textlinksname.'~i', $replace,$body,200);

Disregard the comment from mayuri_desh. You regex is missing something. You should check that your text is not enclosed within a tag. But I am not sure what would be the best method for this, possibly a negative lookbehind. You can read about it here: http://www.regular-expressions.info/lookaround.html (If I can find some time, I'll try to fix it.)

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.