Code Snippet
Find URLs in Text, Make Links
<?php
// The Regular Expression filter
$reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
// The Text you want to filter for urls
$text = "The text you want to filter goes here. http://google.com";
// Check if there is a url in the text
if(preg_match($reg_exUrl, $text, $url)) {
// make the urls hyper links
echo preg_replace($reg_exUrl, "<a href="{$url[0]}">{$url[0]}</a> ", $text);
} else {
// if no urls in the text just return the text
echo $text;
}
?>The basic function of this is to find any URLs in the block of text and turn them into hyperlinks. It will only find URLs if they are properly formatted, meaning they have a http, https, ftp or ftps.
Check out the comments below for more solutions.
I want to thank you from the bottom of my little heart, I have been in search for this exact script for the past 6 months! Thank you, thank you, thank you. I would like to point out however that there was error but nothing I could not fix :D Assid from your code this is the code that I got to work for myself.
<?php // The Regular Expression filter $reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/"; // The Text you want to filter for urls $text = "The text you want to filter goes here. http://google.com"; // Check if there is a url in the text if(preg_match($reg_exUrl, $text, $url)) { // make the urls hyper links echo preg_replace($reg_exUrl, '<a href="'.$url[0].'" rel="nofollow">'.$url[0].'</a>', $text); } else { // if no urls in the text just return the text echo $text; } ?>Again thank you very much!
This doesn’t work for 2 or more URLs.
Try using a loop => solved my problem when getting the data via MySQL
Find the Image URL using preg_match() syntax or something similar to extract JPG or PNG or GIF URLs from a mixed text and put them in an array or at last store the first url.
maybe some syntax which searchs for strings that are beginning with http and ending with jpg/png/gif..
i believe it can be done with preg_match()
Note: the text can be like that : $string =blablablabla”http://www.xxx.com/xxx.jpg”blablablabla
$matches = array();
preg_match_all(‘!http://.+\.(?:jpe?g|png|gif)!Ui’ , $string , $matches);
Thanks,
It works like charm!
This is my version based on previous examples… hope this helps someone trying to force links on www without the http…
simply call the function as follows:
$body = txt2link($body);
Cases that this won’t catch:
http://localhost/test
http://1.2.3.4/test
Also if you feed in
“http://www.google.co.uk/page is on the website http://www.google.co.uk/”
you will get some very mangled output, as when you search for “http://www.google.co.uk/” you will also match the text in the middle of the existing link for “http://www.google.co.uk/page”
your site is amazing. no bull shit. all good stuff. pls include my email id in ur permanent mailing list.
can that original script for finding urls be modifed to look for links ending with an .mp3 exstension?
Thanks, working a charm!
Great post. Just what I was looking for. I’m going to use it on my site.
Thanks.
Another equivalent function that make better results : http://code.seebz.net/p/autolink-php/
There is the same in javascript : http://code.seebz.net/p/autolink-js/
The domain name can be longer then 3 characters, e.g. http://cxid.info/
Great trick for developing the regular expression.
I’ve changed it a little bit, cause it won’t work for more than one url. Besides THANK YOU very much for the help.
i really liked this preg :D
You Have some useful ideas! Maybe I ought to ponder trying this by my self. Cheers
DigWP
A book and blog co-authored by Jeff Starr and myself about the World's most popular publishing platform.
Quotes on Design
Design, like Art, can be an elusive word to define and an awfully fun thing to have opinions about.
HTML-Ipsum
One-click copy to clipboard access to Lorem Ipsum text that comes wrapped in a variety of HTML.
Bookshelf
Hey Chris, what books do you recommend? These, young fertile mind, these.