亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

用于在 URL 中查找語言環境的正則表達式

用于在 URL 中查找語言環境的正則表達式

PHP
aluckdog 2023-05-12 16:05:17
我正在做正則表達式來解析 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
查看完整描述

1 回答

?
慕容708150

TA貢獻1831條經驗 獲得超4個贊

您可以匹配單個正斜杠,在第一組中捕獲 2 個字符 az,然后使第 2 組可選匹配正斜杠和除以錨結尾的換行符之外的任何字符$

注意,現在有 2 個捕獲組而不是 3 個,并且如果將分隔符更改為 char 而不是/like 例如~,則不必轉義正斜杠。

^/([a-z]{2})(/.*)?$

查看


查看完整回答
反對 回復 2023-05-12
  • 1 回答
  • 0 關注
  • 140 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號