- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我重写 URL 以包含用户生成的旅游博客的标题。
我这样做是为了 URL 的可读性和 SEO 目的。
http://www.example.com/gallery/280-Gorges_du_Todra/
第一个整数是id,其余的都是给我们人类的(但与请求资源无关)。
现在人们可以编写包含任何 UTF-8 字符的标题,但大多数都不允许在 URL 中。我的听众一般说英语,但由于他们旅行,他们喜欢包括像
这样的名字Aït Ben Haddou
在 linux 上使用 PHP 在 URL 中显示的正确翻译方法是什么。
到目前为止,我已经看到了几种解决方案:
只是去掉所有不允许的字符,替换空格这有奇怪的结果:'Aït Ben Haddou' →/gallery/280-At_Ben_Haddou/
不是很有帮助。
只是去掉所有不允许的字符,替换空格,留下字符码 (stackoverflow.com) 很可能是因为使用了“正则表达式锤子”
这会产生奇怪的结果:'tést tést' →/questions/0000/t233st-t233st
翻译为“最接近的等价物”'Aït Ben Haddou' →/gallery/280-Ait_Ben_Haddou/
但这对德语来说是错误的。例如'ü'应该音译'ue'。
对我来说,作为一个荷兰人,第三个结果“看起来”最好。
但是我很确定(1)很多人会有不同的意见,(2)在德国的例子中这是完全错误的。
第 3 个选项的另一个问题是:如何找到所有可以转换为 7 位等效字符的可能字符?
所以问题是:
在您看来,最理想的结果是什么。 (在技术范围内)
如何从技术上解决它。 (达到预期的结果)用 PHP。
最佳答案
最终,对于这个问题,您将不得不放弃“正确”的想法。翻译字符串,无论你怎么做,都会以兼容性和可读性的名义破坏准确性。所有三个选项都同样兼容,但 #1 和 #2 在可读性方面受到影响。因此,只需运行它并选择看起来最好的东西——选项 #3。
是的,德语的翻译是错误的,但是除非您开始要求您的用户指定他们的标题使用的是什么语言(并且限制他们只能使用一种语言),否则您解决这个问题的努力要比这是值得的。 (例如,在每种已知语言的词典中查找标题中的每个词,并根据其语言规则翻译该词的变音符号可行,但这是多余的。)
或者,如果德语比其他语言更受关注,请让您的翻译始终使用存在的德语版本:ä
→ae
, ë
→e
, ï
→i
, ö
→ oe
, ü
→ue
.
编辑:
哦,至于实际方法,我会通过 str_replace
翻译特殊情况(如果有的话),然后使用 iconv
进行其余操作:
$text = str_replace(array("ä", "ö", "ü", "ß"), array("ae", "oe", "ue", "ss"), $text);
$text = iconv('UTF-8', 'US-ASCII//TRANSLIT', $text);
关于php - 重写 'pretty URLs' 时如何处理变音符号(重音),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/465990/
我的问题:在没有多余括号的情况下漂亮地打印表达式的最干净的方法是什么? 我有以下 lambda 表达式的表示: Term ::= Fun(String x, Term t) | App(
我正在创建一些脚本和程序来使用获取提交信息 git log --pretty= -1 我想知道此命令的输出是否适合由程序(管道)解析或仅用于呈现给人类(瓷器)。例如,在某些项目中,我正在获取提交 S
当我构建应用程序时,我使用的是 adonis js 项目版本 5 和 Node js 版本 14 以及 docker 版本 20 一切正常但是当我创建 docker 图像并运行容器 docker 时我
使用 mongo v2.4.5 shell,db.col.find().pretty() 在 osx 控制台或 linux ubuntu 12.04 bash 上对我来说打印效果不佳。 使用和不使用
我想将一些printf/sprintf/fprintf语句重构为ostream/sstream/fstream 语句。有问题的代码漂亮地打印了一系列整数和 float ,使用空格填充和固定的小数点数。
我理解大多数具有动态 Web 内容的编程语言中 \t 和 \n 的概念。与大多数人一样,我使用它们的目的是转换所有花哨的 HTML,使其在查看源代码时可读且“漂亮”。目前,我正在制作一个使用 PHP
System.Type 类的名称属性在泛型类型的情况下返回一个奇怪的结果。有没有办法让类型名称的格式更接近我指定的方式?示例:typeof(List).OriginalName == "List" 最
我正在尝试在 Haskell 中漂亮地打印一棵二叉树,这样如果您将头向左转,它应该看起来像一棵树。树中的每一层都应比上一层缩进 2 个空格。 这是预期的输出: -- 18 --
如何在 gdb 中禁用特定的 pretty-print ? 例如,禁用 C++11 std::unique_ptr 打印机。 gdb 帮助或文档未提供真实世界或工作示例。 最佳答案 这对我有用: (g
编辑 我不只是问“缩进”每一行代码,还问“ pretty-print ”和/或更广泛的“缩进”定义,其中行将根据它们包含的内容进行分组/拆分。 这是一个函数(我编写它是为了解决欧拉问题,但这不是重点:
有没有办法像 SBCL 一样以清晰的方式打印评估嵌套语法引号的结果?这在编写宏时调试嵌套语法引号时非常有用。例如,在 Clojure 1.8 中, (let [x '(1 2)] ``(~~@x))
R有多个软件包,可帮助从统计模型输出中打印“漂亮”表(LaTeX/HTML/TEXT),并轻松比较替代模型规范的结果。 其中一些软件包是apsrtable,xtable,memisc,texreg,o
python Data Classes实例还包括一个字符串表示方法,但是当类具有多个字段和/或更长的字段值时,它的结果对于 pretty-print 目的来说并不足够。 基本上,我正在寻找一种方法来自
我需要进行这样的舍入并将其转换为字符: as.character(round(5.9999,2)) 我希望它成为6.00,但它只是给我6 无论如何,我可以让它显示6.00吗? 最佳答案 尝试以下任一方
当我对源使用各种选项进行缩进时,它会执行我想要的操作,但也会使* s在指针类型中的位置困惑: -int send_pkt(tpkt_t* pkt, void* opt_data); -void
我试过 pprint来自 pprint ,但它的输出只有一行,没有多行输出,也没有缩进。 最佳答案 我使用namedtuple的 _asdict 方法。 但是,它返回 OrderedDict其中ppr
我正在为 ocaml 寻找代码格式化程序或 pretty-print 。类似于 gofmt 的 go 编程语言。它最好保留注释。 我正在更正提交内容,并且某些代码的格式使其难以阅读。 最佳答案 如果你
假设我有一个如下定义的二叉树数据结构 type 'a tree = | Node of 'a tree * 'a * 'a tree | Nil 我有一个树的实例,如下所示: let
我正在使用 Pretty Dropdowns ( https://www.npmjs.com/package/pretty-dropdowns ) 作为我的下拉菜单,并且我有一个允许用户将行附加到表单
我正在使用 pretty-print Data.Text.Prettyprint.Doc 。现在我想以不同的方式设计我的输出,并认为语义注释的想法非常适合这里。考虑以下示例 {-# LANGUAGE
我是一名优秀的程序员,十分优秀!