Jump to content

[SOLVED] link conversion


dennismonsewicz

Recommended Posts

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?

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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;
}

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.