dennismonsewicz Posted August 21, 2008 Share Posted August 21, 2008 I have a script that allows users to insert comments when they add a new entry into the CMS Well The comments box is just a normal HTML textarea The problem I am having is that users sometimes include links to other sites (which is allowable in the CMS I built) but what I need to happen is for my script to convert them into links to their respected places. Example: If a user puts in the comments this www.google.com, www.yahoo.com, www.phpfreaks.com I would like to convert the text links to actual html links, any suggestions? Quote Link to comment Share on other sites More sharing options...
dennismonsewicz Posted August 21, 2008 Author Share Posted August 21, 2008 I have this code: function replace_plain_text_link($plain_text) { $url_html = preg_replace( '/(?<!S)((http(s?):\/\/)|(www.))+([w.1-9\&=#?-~%;]+)/', '<a href=”http$3://$4$5″>http$3://$4$5</a><br />', $plain_text); return ($url_html); } but it only replaces the root address. IE: www.test.com. anything after the .com does not become a link. Any suggestions? Quote Link to comment Share on other sites More sharing options...
dennismonsewicz Posted August 21, 2008 Author Share Posted August 21, 2008 anyone? Quote Link to comment Share on other sites More sharing options...
Psycho Posted August 21, 2008 Share Posted August 21, 2008 Here's a function modified from this post: http://www.phpfreaks.com/forums/index.php?topic=209261.0 (funny what you can find with a search) It works for links created in either of the two formats: www.mysite.com/directory.file.php [urlwww.mysite.com/directory.file.php[/url] function makeClickableLink($text) { $link = preg_replace('% ### Not preceded by an url start. (?<!url[=\]]) ( ### Protocol or start. (?: (??:https?|ftp)://) | www\. ) ### Body. (?> ### Gobble all non-space with the exception of [/url] (??!\[/url\])\S)+ ### Avoid ending punctuation. (?<!\p{P}) ) ### Not followed by an url end. (?!\[/url\]) ) %x', '<a href="$1">$1</a>', $text); return $link; } Quote Link to comment Share on other sites More sharing options...
dennismonsewicz Posted August 21, 2008 Author Share Posted August 21, 2008 I love this site! Your script worked like a charm! Thanks! Quote Link to comment Share on other sites More sharing options...
Maq Posted August 21, 2008 Share Posted August 21, 2008 After you grab all the text in the textarea, loop through each one using a delimiter, putting each link into an array. Then Use something like: $link1 = ""; echo $link1; Haven't tested it but I think this approach will work. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.