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

时间:2018-03-09 13:34:43

标签: php regex url hyperlink hebrew

尝试将纯文本URL文本转换为有效链接。

我遇到的问题是我的链接可能包含 英语(AZ / az)和希伯来语 (אבגדהוזחטיכךלמםנןסעפףצץקרשת)信件。

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

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

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

我需要转换为链接的网址示例:

  

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

2 个答案:

答案 0 :(得分:1)

尽管我相信您已发布以表示所需的输出,但如果这是我的任务,我想我会在href标记和人类可读的链接文本中包含urlencoded <a>值。

代码:(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

请注意,当您将鼠标悬停在链接上时,您的浏览器状态栏无论如何都会显示未编码的网址。

答案 1 :(得分:0)

您只需要替换%2F =&gt; /,因此您的链接将为:google.co.il/%D7%A9%D7%9C%D7%95%D7%9D_Hello.html

link