如何使用 php urlencode() 将 url 转换为超链接?

How to convert an url into a hyperlink with php urlencode()?

正在尝试将纯文本 URL 转换为有效的 link。

我遇到的问题是我的 link 可能包含 both English (A-Z/a-z) 和 希伯来文 (אבגדהוזחטיכךלמםנןסעפףצץקרשת) 字母。

使用 PHP 的 urlencode() 函数,我能够获得正确的希伯来语格式,但我找不到将其转换为 link 的正确方法。

到目前为止我的代码(不适用于希伯来字母):

$replyText = preg_replace('@(https?://([-\w\.]+[-\w])+(:\d+)?(/([\w/_\.#-]*(\?\S+)?[^\.\s])?)?)@', '<a href="" target="_blank"></a>', $replyText);

一个 URL 的例子我需要转换成 link:

google.co.il%2F%D7%A9%D7%9C%D7%95%D7%9D_Hello.html

将成为:

google.co.il%2F%D7%A9%D7%9C%D7%95%D7%9D_Hello.html

您只需替换 %2F => /,因此您的 link 将是:google.co.il/%D7%A9%D7%9C%D7%95%D7%9D_Hello.html

link

尽管我相信您已经发布了代表所需输出的内容,但如果这是我的任务,我想我会在 <a> 标记中有一个 url 编码的 href 值和 human-readable link 文本。

代码:(Demo)

$replyText = "google.co.il%2F%D7%A9%D7%9C%D7%95%D7%9D_Hello.html";
echo '<a href="', str_replace('%2F','/',$replyText), '">', urldecode($replyText), '</a>';

源代码输出:

<a href="google.co.il/%D7%A9%D7%9C%D7%95%D7%9D_Hello.html">google.co.il/שלום_Hello.html</a>

有效输出:

google.co.il/שלום_Hello.html

请注意,当您将鼠标悬停在 link 上时,浏览器的状态栏将无论如何显示 un-encoded url。