Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Twitter上共享时URL中的阿拉伯文字符_Php_Twitter_Utf 8_Urlencode_Arabic - Fatal编程技术网

Php 在Twitter上共享时URL中的阿拉伯文字符

Php 在Twitter上共享时URL中的阿拉伯文字符,php,twitter,utf-8,urlencode,arabic,Php,Twitter,Utf 8,Urlencode,Arabic,我在尝试在Twitter上共享包含阿拉伯语字符的URL时遇到了一个问题: http://example.com/قرعة-تصفيات-أفريقيا-مصر-تواجه-نيجيريا/ 当我点击“共享”时,相同的URL会显示在tweet框中,但当我实际发布tweet时,它只是链接到http://example.com,URL的其余部分将丢失 我尝试使用urlencode(),但生成的URL太长,无法发送tweet。我如何解决这个问题?如果您是网站的所有者,您可以编写htaccessRewr

我在尝试在Twitter上共享包含阿拉伯语字符的URL时遇到了一个问题:

http://example.com/قرعة-تصفيات-أفريقيا-مصر-تواجه-نيجيريا/
当我点击“共享”时,相同的URL会显示在tweet框中,但当我实际发布tweet时,它只是链接到
http://example.com
,URL的其余部分将丢失


我尝试使用
urlencode()
,但生成的URL太长,无法发送tweet。我如何解决这个问题?

如果您是网站的所有者,您可以编写htaccess
RewriteRule
来生成更短的英文url或使用重定向文件

RewriteEngine on 
RewriteRule ^redirect/(.*)/?$ ./redirector.php?key=$1 [QSA,L,NC]

如果你是网站的用户,你可以使用URL更短的网站,比如或

你可以在上使用重写规则。htaccess文件或使用URL更短的服务

我使用URL更短的网站,例如goo.gl;然而,发布一个简单的URL要花费更多的时间。

这是一个有两个方面的问题:网络演示

网络 除了ASCII字符外,永远不会传递URL。例如,当您请求

http://example.com/عربي
它将生成一个错误,或者,根据您的客户,例如Chrome,将转换为:

http://example.com/%D8%B9%D8%B1%D8%A8%D9%8A
演示 互联网浏览器尽其所能以最具可读性的方式呈现这一点。例如,当您请求以下URL时:

http://example.com/%D8%B9%D8%B1%D8%A8%D9%8A
Chrome将以以下形式向用户展示:

http://example.com/عربي

Chrome还负责复制和粘贴。因此,当您复制顶部栏中包含Unicode字符的URL时,它将复制
http://example.com/%D8%B9%D8%B1%D8%A8%D9%8A
http://example.com/عبي
。现在你需要做的是检查twitter是如何处理这个问题的。它可能已经做了一些演示来简化用户体验。然而,在网络方面,你真的做不了多少

您可以使用、、或其他URL缩写器吗?其中大多数都有API,因此您可以通过编程方式创建较短的URL。而且,这似乎与编程无关。您提到了php,但没有给出web应用程序的代码或描述,只提供了对
urlencode()
的引用,检查了语言设置后。。。我不确定,但只需检查一次..从技术上讲,URL不能包含非ASCII字符,您确实应该使用URL编码路径。如果Twitter只处理当前编码的URL,我不会感到惊讶。浏览器通常是松散的,有时也会接受不正确的URL。您是要共享的网站的所有者吗?如果是,您应该将URL重写为更短,或者使用文章id而不是完整标题。如果你没有,那么你应该用一个url缩短器来缩短它。我认为twitter有自己专用的短消息器,因为我刚刚尝试过分享它,它可以工作。你是否尝试选择并复制/粘贴URL到推特中?阿拉伯语是从右到左阅读的,因此从左到右选择整个URL(如果您不小心的话)将省略部分URL。在阿拉伯语维基百科上的地址栏上试试。我用goo.gl来表示简短的URL