回答編集履歴

2

「マッチング」という表現は不適切と判断し、修正

2015/10/18 23:40

投稿

sounisi5011
sounisi5011

スコア697

test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- 例えば、`foo|bar`という正規表現にマッチングする場合、以下のように記述しなくてはなりません。
9
+ 例えば、`foo|bar`という正規表現を利用する場合、以下のように記述しなくてはなりません。
10
10
 
11
11
 
12
12
 
@@ -44,7 +44,7 @@
44
44
 
45
45
  エラー以外の問題として、パターンが不完全という点が挙げられます。
46
46
 
47
- 目的のパターンはもしかして、`file:"{url}"`という形式ではありませんか$2
47
+ 目的のパターンはもしかして、`file:"{url}"`という形式ではありませんか?
48
48
 
49
49
  パターンの後ろに`"`が無いようですが…
50
50
 
@@ -80,7 +80,7 @@
80
80
 
81
81
  $str = 'xxxxxxxxfile:"http://xxxexample.com/xxx/yyy/zzz.img"';
82
82
 
83
- $ptn='^file:"(https$3://[-_.!~*\'()a-zA-Z0-9;/$4:@&=+$,%#]+\.img)"^';
83
+ $ptn='^file:"(https?://[-_.!~*\'()a-zA-Z0-9;/?:@&=+$,%#]+\.img)"^';
84
84
 
85
85
  preg_match_all($ptn, $str, $src, PREG_SET_ORDER);
86
86
 

1

コードの位置がおかしかったため修正

2015/10/18 23:40

投稿

sounisi5011
sounisi5011

スコア697

test CHANGED
@@ -22,23 +22,9 @@
22
22
 
23
23
  質問の正規表現の場合、デリミタを`/`にすると正規表現内で`/`をエスケープする必要があるため、`/`以外のデリミタを使用したほうが良いでしょう。
24
24
 
25
+ 質問のコードを動くように修正すると、以下のようになります。
25
26
 
26
-
27
- ```PHP
28
-
29
- $str = 'xxxxxxxxfile:"http://xxxexample.com/xxx/yyy/zzz.img"';
30
-
31
- $ptn='file:\"(http:\/\/[-_.!~*\'()a-zA-Z0-9;/$5:@&=+$,%#]+\.img)';
32
-
33
- preg_match_all($ptn, $str, $src);
34
-
35
- ```
36
-
37
-
38
-
39
- エラーの原因はこれです。
40
-
41
- 動くように修正する、以下のようになります
27
+ (このコードでは、デリミタして`^`を利用しています)
42
28
 
43
29
 
44
30
 
@@ -58,7 +44,7 @@
58
44
 
59
45
  エラー以外の問題として、パターンが不完全という点が挙げられます。
60
46
 
61
- 目的のパターンはもしかして、`file:"{url}"`という形式ではありませんか$6
47
+ 目的のパターンはもしかして、`file:"{url}"`という形式ではありませんか$2
62
48
 
63
49
  パターンの後ろに`"`が無いようですが…
64
50
 
@@ -78,7 +64,7 @@
78
64
 
79
65
  ただ、見て分かる通り非常に複雑なので、これを利用しなくてはならない場合は非常に限られます。
80
66
 
81
- 大抵の用途であれば、[filter_var](http://php.net/manual/ja/function.filter-var.php)関数によるURLの正当性検証だけで十分でしょう
67
+ 大抵の用途であれば、[filter_var](http://php.net/manual/ja/function.filter-var.php)関数によるURLの正当性検証で十分で
82
68
 
83
69
 
84
70
 
@@ -94,7 +80,7 @@
94
80
 
95
81
  $str = 'xxxxxxxxfile:"http://xxxexample.com/xxx/yyy/zzz.img"';
96
82
 
97
- $ptn='^file:"(https$7://[-_.!~*\'()a-zA-Z0-9;/$8:@&=+$,%#]+\.img)"^';
83
+ $ptn='^file:"(https$3://[-_.!~*\'()a-zA-Z0-9;/$4:@&=+$,%#]+\.img)"^';
98
84
 
99
85
  preg_match_all($ptn, $str, $src, PREG_SET_ORDER);
100
86