将url参数转换为占位符

时间:2016-12-03 17:15:23

标签: php zend-framework2 zend-route zend-router

我想知道如何在ZF2中翻译一个有参数的网址。

例如:

/{:language_link-schools-:city_link}

我不这样做的原因:

/:language_link-{schools}-:city_link

因为在某些语言中,例如西班牙语,单词的顺序会发生变化。

我正在使用PhpArray,当我翻译它时,参数不会被替换,因此url呈现为​​(例如西班牙语):

/:language_link-escuela-:city_link

而不是预期的行为:

/ingles-escuela-miami

修改

参数是 :language_link:city_link

所以我的想法是,在一种语言中,渲染的网址可能是:

 /:language_link-schools-:city_link 

用其他语言表示:

/:language_link-:city_link-school

与翻译语句时的操作类似:

sprintf($this->translate('My name is %s'), $name) ;

1 个答案:

答案 0 :(得分:0)

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