【发布时间】:2019-03-17 11:04:17
【问题描述】:
我正在尝试使用乌尔都语字符串制作 URL。它们是 UTF8 编码和正常的 RTL。对于所有其他情况,默认的 PHP 行为非常棒。它会自动将代码中的正常 LTR 操作调整为 RTL 作为输出。 使用 PHP 7.2.13。
像 "a" 。 “乙”。如果这些字符串 RTL 被标记,则 RTL 中的“c”会自动显示为“cba”。
我的问题是制作 URL。哪些是 LTR 用斜杠分隔。文件夹 1/文件夹 2/文件夹 3。当所有三个字符串都是乌尔都语时的有趣输出,它变成了 folder3/folder2/folder1。
以下示例代码应该可以在我尝试的 LTR 和 RTL 语言中工作,应该会显示问题:
<?php
$url_path1 = "اتر پردیش"; #translates as uttar pradesh (notice two words and a space)
$url_path2 = "کانپور"; #translates as kanpur
$url_path = "$url_path1/$url_path2";
echo "in Terminal: $url_path\n";
$html = <<<H
<!DOCTYPE html>
<html lang="ur">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
Url Path: $url_path
</body>
</html>
H;
file_put_contents("del-urdu.html",$html);
在终端输出(iTerm)中,它显示正确(path1/path2),而当打开生成的del-urdu.html文件时,它的出现不同(path2/path1)。
如何关闭字符串连接的这种行为?
【问题讨论】:
-
没关系。由于浏览器不支持 RTL 字符,您看到的 URL 是颠倒的。
-
我不是在谈论浏览器。浏览器确实支持 RTL,即使在地址栏中也是如此。我只说php方面。
-
请阅读“rtl”的描述!
-
你能提供一个minimal reproducible example吗?许多人会在使用乌尔都语字母(可能包括您)创建脚本时遇到问题,并且拥有具体代码会使解释变得多余,因为每个人都可以检查事实。顺便说一句:你的 PHP 版本是什么?
-
之前给出的代码正是我写的。现在我尝试了更多上下文和工作示例。