【问题标题】:warp string url into html link tag将字符串 url 转换为 html 链接标签
【发布时间】:2014-10-02 17:09:11
【问题描述】:

所以我尝试将 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://

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

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

第二次编辑:对不起,我忘了说我还想在链接中保留其他文本..所以就像我在输入“这是 www.xxxxx.com 中的大新闻”以及何时我显示它/它将是“这里是 xxxxx 的大新闻”,其中 xxxxx 将是可点击的链接... 我尝试这样做是因为我要将它用于我的网站公告部分......

我们可以这样做吗?

更新:

我有一些想法,首先我们做 preg_replace 来捕获 http:// 并删除它,然后我们捕获 www。将其变形为 html 链接标签并捕获 www。以及 .com/.co/或 .whatever 之后的所有内容并将其全部删除,直到下一个空格

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

【问题讨论】:

  • 你的意思是&lt;a href= 否则,它不会是一个有效的href
  • 我们需要看看你使用的是什么$url。是“谷歌”吗?是“www.google.com”吗?其他?
  • 我希望它灵活,所以如果 $url = www.google.com 或 $url = google.com 它只会给出与 google.com >google 相同的输出一个>
  • 看看我在下面发布的内容。这是一种方法。

标签: php mysql


【解决方案1】:

这大约是我能想到的最接近的,以便做你想做的事情。

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

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

bookmark.txt(按照显示的确切格式)- 您无需输入 http://,它是自动的。

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

谷歌 google.com 雅虎 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.com 雅虎|yahoo.com 堆栈溢出|stackoverflow.com/posts/26154124

你是否决定使用Google Search之类的东西

即:

谷歌搜索|google.com 雅虎|yahoo.com 堆栈溢出链接|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 知识范围非常广泛,超出了我的知识范围。

【讨论】:

  • 非常感谢您的努力....我尝试了第二种方法,它仅适用于 http:// 和 https://,如果我以 www 开头,它无法捕获链接.还有链接标签扭曲了stackoverflow的预定义文本,如何根据被捕获的文本进行更改......对于第一个我还没有尝试过,但从我看来它似乎只关注想要更改为链接的文本....这也是我的错,我忘了解释我不仅提供链接输入,还提供其他文本...
  • @PUCUK 不客气。我不完全确定它会解决你的问题。我试过了,干杯
【解决方案2】:

你是说这个吗?

 $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);

【讨论】:

  • 好吧,www.google.com 只是一个例子……我希望它不仅能捕捉到任何网址,而且还能捕捉到 www.google.com
【解决方案3】:

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

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

希望对你有帮助……

【讨论】:

  • 哦,抱歉,这只是这个问题的错字啊哈哈,我主要使用自动完成功能,所以我几乎从不输入“=”,甚至我只是输入“h”,一切都像“href="啊啊哈哈:D跨度>
猜你喜欢
  • 2013-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-22
  • 2020-08-17
  • 1970-01-01
  • 1970-01-01
  • 2021-01-24
相关资源
最近更新 更多