私は正規表現を書くのがとても苦手です。
角かっこ「()」の間の値を取得しようとしています。以下のようなもの...
$a = "POLYGON((1 1,2 2,3 3,1 1))";
preg_match_all("/\((.*)\)/U", $a, $pat_array);
print_r($pat_array);
しかし、これは私に次のような要素を与えます...
Array
(
[0] => Array
(
[0] => ((1 1,2 2,3 3,1 1)
)
[1] => Array
(
[0] => (1 1,2 2,3 3,1 1
)
)
しかし、出力として「1 1,2 2,3 3,11」をフェッチしたい。
この出力を取得した後、ブラケットをトリミングできることはわかっています。しかし、正規表現を使用して行うと、これは素晴らしいことです。
前もって感謝します。
@anubhavaの正規表現を使用します。
例:
$a = "POLYGON((1 1,2 2,3 3,1 1),(1 1,2 2,3 3,1 1),(1 1,2 2,3 3,1 1))";
そして、この正規表現の結果を印刷すると、次のようになります...
Array
(
[0] => Array
(
[0] => ((1 1,2 2,3 3,1 1)
[1] => (1 1,2 2,3 3,1 1)
[2] => (1 1,2 2,3 3,1 1))
)
[1] => Array
(
[0] => 1 1,2 2,3 3,1 1
[1] => 1 1,2 2,3 3,1 1
[2] => 1 1,2 2,3 3,1 1
)
)
2番目の配列要素を見てください。私たちが望んでいるのとまったく同じです。
参考:MySQLデータベースからPOLYGONのGEOMETRYデータを取得するために使用し、配列で処理して、すべてのポリゴンノードのすべての緯度と経度を取得しました。
否定ベースの正規表現パターンを使用して、キャプチャされたグループ#1から結果を取得します。
preg_match_all('/\(+([^()]*)\)+/', $a, $pat_array);
print_r($pat_array[1]);
[^()]*
(
またはでない任意の文字に一致します)
。
出力:
Array
(
[0] => 1 1,2 2,3 3,1 1
)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加