【问题标题】:php string concatenation (without) RTLphp 字符串连接(无)RTL
【发布时间】: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 版本是什么?
  • 之前给出的代码正是我写的。现在我尝试了更多上下文和工作示例。

标签: php string utf-8


【解决方案1】:

没关系。即使我们看到了 folder3/folder2/folder1
但实际上是文件夹 1/文件夹 2/文件夹 3。
别担心。

【讨论】:

  • 你是对的。我的代码错误地生成了 URL,正确地解析了相同的错误 URL。真的很有趣,但我不希望 URL 中的文件夹路径改变它们的位置。就是这样。
猜你喜欢
  • 2020-08-22
  • 1970-01-01
  • 2015-09-16
  • 2014-04-29
  • 2010-09-12
  • 2010-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多