簡體   English   中英

PHP Regex缺少捕獲組

[英]PHP Regex missing capture group

我正在嘗試解析幾個坐標,但是PHP preg_match缺少捕獲組。 它可以在我測試過的每個正則表達式模擬器中使用,但不適用於我的代碼。 第4組總是空着;

$coordinates = 'N40.765775°  E8.303369°';
// -40.765775°  -8.303369°
//  40.765775°  8.303369°
// -40.765775°  8.303369°
// N40.765775°  E8.303369°
// S40.765775°  E8.303369°
// N40.765775°  W8.303369°
// S40.765775°  W8.303369°

$regex = '/([-NnSs]?)\D*([0-9]?[0-9])\.(\d{1,10}+)\D\h*([-EeWw]?)\D*([0-1]?[0-9]?[0-9])\.(\d{1,10}+)/';
if (preg_match($regex, $coordinates, $matches)) {
    print_r($matches);
} else {
    echo "no matches";
}

由於您要解析具有多字節字符(°)的字符串,因此應在regex末尾添加unicode 修飾符 ,即u

/      /u

就像一個例子:如果沒有該修飾符,則添加. \\D ,在這里:

\D.\h*([-EeWw]?)

...那么您將在第四個捕獲組中捕獲“ E”。 所以\\D. 實際上匹配多字節字符°

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM