php - 正则表达式在 URL 中查找语言环境
问题描述
我正在做正则表达式来解析 url 并在我的网站上找到语言环境。我所做的是这段代码:
<?php
$app_conf = require_once __DIR__ . '/../config/app.php';
function extract_lang($avail)
{
$uri_lang = [];
if (preg_match('/^(\/)+([a-z]{2})(\/+.*)?/', $_SERVER['REQUEST_URI'], $uri_lang)) {
if (in_array($uri_lang[2], $avail)) {
$_SERVER['REQUEST_URI'] = isset($uri_lang[3]) ? $uri_lang[3] : "/";
$_SERVER['HTTP_LANG'] = $uri_lang[2];
}
}
}
if ($app_conf['extract_from_uri']) {
extract_lang($app_conf['locales']);
}
它大部分时间都在工作,但它有错误。如果我给定的 url 以 'en' 开头 - 它认为它是一个语言环境并崩溃我的应用程序的逻辑。导致错误的示例路线:
https://m2.test/environmental_projects
我需要以某种方式更新我的正则表达式,我正在努力解决它,请帮助我。在语言环境配置中,我有数组
'locales' => ['en', 'ru']
好的路线应该看起来像
https://m2.test/en/environmental_projects
解决方案
推荐阅读
- python - vscode python重构失败
- python - 如何有条件地替换熊猫数据框列中的子字符串?
- reactjs - 在本机反应中中止获取请求:无法执行反应状态更新
- laravel - Laravel passport creating a oauth_client with userid not with php artisan passport:client --password
- pointers - 切片结构行为
- react-native - 无法让 DatePickerAndroid 在按钮按下 React Native 上工作
- r - devtools::check() F 使用而不是 FALSE 执行停止,R
- angular - 为什么 ngx-datatable 性能慢?
- c++ - 在 std::thread 中运行时,C++ 成员变量的生命周期是多少?
- r - 如何从我感兴趣的值中获取行号?