我想知道如何在ZF2中转换具有参数的URL。

例如:

/{:language_link-schools-:city_link}

我不这样做的原因:
/:language_link-{schools}-:city_link

这是因为在某些语言(例如西类牙语)中,单词的顺序会改变。

我正在使用PhpArray,当我翻译它时,不会替换参数,因此URL呈现为(西类牙语示例):
/:language_link-escuela-:city_link

而不是预期的行为:
/ingles-escuela-miami

编辑:

参数是:language_link:city_link
因此,想法是用一种语言呈现的URL可以是:
 /:language_link-schools-:city_link

并用另一种语言可以是:
/:language_link-:city_link-school

与翻译语句时所做的类似:
sprintf($this->translate('My name is %s'), $name) ;

最佳答案

PHP中有一个名为strtr的函数。它允许将任何模式转换为值。
以您的示例为例,我们可以执行以下操作:
如果字符串是这样的:/:language_link-escuela-:city_link然后,您可以执行以下操作

<?php
$rawUrl = "/:language_link-escuela-:city_link";

$processedUrl = strtr($rawUrl, [
  ':language_link' => 'es',
  ':city_link' => 'barcelona',
]);

echo $processedUrl; // Output: /es-escuela-barcelona

10-06 00:18