warp string url into html link tag

时间:2014-10-02 03:31:11

标签: php mysql

所以我试图将url(如www.google.com)替换为html链接标记,如此

return preg_replace('"\b(www.\S+)"', '<a href="$1" style="color:white;">$1</a>', $url);

这是从其他地方修改preg_replace,我仍然不完全理解它是如何工作的....

所以,如果我使用这个,我会得到

<a href"www.google.com" style="color:white;">www.google.com</a>

这意味着它会在我的网站目录中查找www.google.com而不会打开www.google.com网站

我想要实现的是

<a href"http://www.google.com" style="color:white;">google</a>

那么如何实现这样的目标呢?当我输入

时会更好
http://www.google.com

然后它也将取代

http://www.

太.... 如果我的当前配置只是替换www。但如果我输入http://那么它只会从www.google.com变形并离开http://

编辑: 所以我想要一个flexibel,所以如果我输入www.google.com或http://www.google.com它会抓住它并将其变成链接标签.... 如果我输入https://stackoverflow.com/posts/26154124/,它也只会显示

<a href"https://stackoverflow.com/posts/26154124/" style="color:white;">stackoverflow</a>

第2次编辑:对不起,我忘了说我还想在链接中保留其他文字..所以这就像我打字&#34;这是www.xxxxx的重大新闻.COM&#34;当我显示它/它将是&#34;这是xxxxx中的一个重大新闻&#34;其中xxxxx将是可点击链接... 我试图这样做是因为我会将它用于我的网站公告部分...

我们可以这样做吗?

更新

我想到了一些想法,首先我们做preg_replace来捕获http://然后删除它,然后我们抓住www。将其变为html链接标记并捕获www。和.com / .co /或.whatever之后的所有内容都要删除所有内容直到下一个空格

但我不知道如何使用preg_replace,因为我不知道它是如何工作的

3 个答案:

答案 0 :(得分:2)

这是我能想到的最接近的,为了做你想做的事。

我确信还有其他方法,但您可以尝试以下方法。

您可以在文本文件中包含以下内容:(您可以拥有1行或更多行)

bookmark.txt (按照所示的确切格式) - 您无需自动放置http://

旁注: 您可以使用google.comwww.google.com - 只有单词Google会显示为链接,但是完整的href将出现在HTML源代码中,并且是有效的网址。

Google google.com
Yahoo yahoo.com
stackoverflow stackoverflow.com/posts/26154124

然后使用以下PHP:

<?php 
$file = "bookmark.txt";
$lines = file($file);
foreach($lines as $line)
{
    $piece=explode(" ",$line);
    $link=trim($piece[1]);
    $text=trim($piece[0]);
    echo '<a href="http://'.$link.'">'.$text.'</a><br>';
}

注意: " "中的$piece=explode(" ",$line);代表一个空格作为分隔符。

您可以将其更改为$piece=explode("|",$line);,然后将文本文件更改为:

Google|google.com
Yahoo|yahoo.com
stackoverflow|stackoverflow.com/posts/26154124

您是否应该决定使用Google Search

之类的内容

即:

Google Search|google.com
Yahoo|yahoo.com
stackoverflow link|stackoverflow.com/posts/26154124

您还可以尝试:

$content = "http://stackoverflow.com/posts/26154124";
$content = preg_replace('$(https?://[a-z0-9_./?=&#-]+)(?![^<>]*>)$i', ' <a href="$1" target="_blank">StackOverflow</a> ', $content." ");

echo $content;

但是在这一点上,一遍又一遍地阅读你的问题,包括你的编辑,我并不完全确定这是你想要的,并且非常广泛,超出了我对PHP的知识范围。

答案 1 :(得分:0)

你是说这个?

 $text = ' This is a text with the link of google.com. And another phrase with google.com url.';
 echo str_replace('google.com','<a href="http://google.com" target=_blank>google</a>',$text);

答案 2 :(得分:0)

你总是对的,但只是一个简单的打字错误

<a href"http://stackoverflow.com/posts/26154124/" style="color:white;">stackoverflow</a>

你在href之后错过了'='等号。请试试这个

<a href="http://stackoverflow.com/posts/26154124/" style="color:white;">stackoverflow</a>
希望它有所帮助...