1. Go to this page and download the library: Download ali-translator/url-template library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
ali-translator / url-template example snippets
use ALI\UrlTemplate\UrlTemplateConfig;
use ALI\UrlTemplate\UrlTemplateResolver;
$urlTemplateConfig = new UrlTemplateConfig(
'{country}.example.com',
'{language}/{city}/',
// Regular expressions that match the parameters
[
'country' => ['uk','ua','pl'],
'language' => '[a-z]{2}', // be careful with some free regular expressions
'city' => ['kiev','berlin','paris','london'],
],
// If you have some default parameters that may be empty in url, set them here
[
'city' => 'berlin',
'language' => 'en',
],
// hide defaults parameters from url ?
true
);
$urlTemplateResolver = new UrlTemplateResolver($urlTemplateConfig);
$url = 'https://gb.example.com/de/london/';
// Parse exist url
$parsedUrlTemplate = $urlTemplateResolver->parseCompiledUrl($url);
var_dump($parsedUrlTemplate->getFullParameters());
// Change some parameter on existed url
$parsedUrlTemplate->setParameter('country','pl');
$urlWithAnotherCountry = $urlTemplateResolver->compileUrl($parsedUrlTemplate);
var_dump($urlWithAnotherCountry);
// Get clear url(without template parameters) for application routing
$simplifiedUrl = $urlTemplateResolver->getSimplifiedUrl($parsedUrlTemplate);
var_dump($simplifiedUrl); // -> "https://example.com"
// Generate full url from simplified url(which application return)
$parsedUrlTemplate = $urlTemplateResolver->generateParsedUrlTemplate('https://example.com/some-category/item?sale=1',[
'country' => 'uk',
'city' => 'london',
// 'language' => 'en', // Default values may be skipped
]);
$compiledUrl = $urlTemplateResolver->compileUrl($parsedUrlTemplate);
var_dump($compiledUrl); // -> "https://uk.example.com/london/some-category/item?sale=1"
// As you may see, in url was skipped default language value "en"
// If you want their in url, you must set "false" to last parameter "isHideDefaultParameters" on constructor of UrlTemplateConfig
use ALI\UrlTemplate\UrlTemplateConfig;
$urlTemplateConfig = new UrlTemplateConfig(
'{country}.test.com',
'/{language}/',
[
'country' => ['tr','gb'],
'language' => ['en','tr','de'],
],
[
'language' => function ($w new Exception('Invalid country alias');
break;
}
},
],
true
);
use ALI\UrlTemplate\ParameterDecorators\WrapperParameterDecorator;
use ALI\UrlTemplate\UrlTemplateConfig;
$urlTemplateConfig = new UrlTemplateConfig(
null,
'/{country}{language}/',
[
'country' => ['ua', 'pl'],
'language' => ['ua', 'en', 'de'],
],
[
'city' => 'berlin',
'language' => 'en',
],
true,
[
'language' => new WrapperParameterDecorator('-'),
]
);
use \ALI\UrlTemplate\UrlTemplateResolver\ParsedUrlTemplateValidator;
use \ALI\UrlTemplate\ParsedUrlTemplate;
/** @var ParsedUrlTemplate $parsedUrlTemplate */
$urlTemplateValidator = new ParsedUrlTemplateValidator();
$errors = $urlTemplateValidator->validateParameters($parsedUrlTemplate);
// $errors : [key -> (string)'error description']
...
[
'language' => function ($sValues['country'] ?? $currentCountryAlias;
...
/** @var $urlTemplateConfig ALI\UrlTemplate\UrlTemplateConfig */
$urlTemplateConfigData = $urlTemplateConfig->generateUrlTemplateConfigData();
// Change some config data
$urlTemplateConfigData->setDefaultUrlSchema('https');
// Create new UrlTemplateConfig
$newUrlTemplateConfig = $urlTemplateConfigData->generateUrlTemplateConfig();