Detect URL in String (PHP/Javascript/jQuery)
By | Wednesday, November 30, 2011


Hide CommentsType in URLs and regular text








PHP:
<?php

$p = '^(http(s)?|ftp)://([a-z0-9_-]+.)+([a-z]{2,}){1}((:|/)(.*))?$'; //URL PATTERN

$str = 'Go to http://wcetdesigns.com'; //STRING TO SEARCH FOR URLS
$w = explode(" ", $str); //SPLITS STRING WITH SPACES TO ISOLATE URLS

//SEARCHES THRU ENTIRE STRING TO FIND TEXTS MATCHING URL PATTERN
foreach($w as $s)
{
if(eregi($p, $s)) //(eregi: not case-sensitive) IF TEXT MATCHES PATTERN...
{
$t .= '<a href="'.$s.'" target="newTab">'.$s.'</a> '; //ADDS THE "<a>" TAG WHEN TEXT MATCHES PATTERN
}
else
{
$t .= $s.' '; //SHOWS AS REGULAR TEXT
}
}

echo $t; //DISPLAYS PROCESSED STRING

?>
jQuery:
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(function(){
//URL PATTERN (not case-sensitive)
var p = /^(http(s)?|ftp)://([a-z0-9_-]+.)+([a-z]{2,}){1}((:|/)(.*))?$/i;
var str = 'Go to http://wcetdesigns.com'; //STRING TO SEARCH FOR URLS
var w = str.split(" "); //SPLITS STRING WITH SPACES TO ISOLATE URLS
var t = ''; //NULL VARIABLE UNTIL INSIDE "FOR LOOP"

//SEARCHES THRU ENTIRE STRING TO FIND TEXTS MATCHING URL PATTERN
for(i=0; i<w.length; i++){
if(w[i].match(p)) //IF TEXT MATCHES PATTERN...
{
t += '<a href="'+w[i]+'" target="newTab">'+w[i]+'</a> '; //ADDS THE "<a>" TAG WHEN TEXT MATCHES PATTERN
}
{
t += w[i]+' '; //SHOWS AS REGULAR TEXT
}
}
$("#string").html(t); //DISPLAYS PROCESSED STRING
});
</script>
</head>
<body>
<div id="string"></div>
</body>
</html>
Javascript:
<html>
<head>
<script>
function detect_url(){
//URL PATTERN (not case-sensitive)
var p = /^(http(s)?|ftp)://([a-z0-9_-]+.)+([a-z]{2,}){1}(:|/(.*))?$/i;
var str = 'Go to http://wcetdesigns.com'; //STRING TO SEARCH FOR URLS
var w = str.split(" "); //SPLITS STRING WITH SPACES TO ISOLATE URLS
var t = ''; //NULL VARIABLE UNTIL INSIDE "FOR LOOP"

//SEARCHES THRU ENTIRE STRING TO FIND TEXTS MATCHING URL PATTERN
for(i=0; i<w.length; i++){
if(w[i].match(p)) //IF TEXT MATCHES PATTERN...
{
t += '<a href="'+w[i]+'" target="newTab">'+w[i]+'</a> '; //ADDS THE "<a>" TAG WHEN TEXT MATCHES PATTERN
}
{
t += w[i]+' '; //SHOWS AS REGULAR TEXT
}
}
document.getElementById("string").innerHTML = t; //DISPLAYS PROCESSED STRING
}
</script>
</head>
<body onLoad="detect_url()">
<div id="string"></div>
</body>
</html>