質問編集履歴

4

題名

2016/08/06 06:11

投稿

maguroyamiy
maguroyamiy

スコア12

test CHANGED
@@ -1 +1 @@
1
- PHP】数字以外+文字の正規表現と文字の取得
1
+ PHP殊な条件での取得
test CHANGED
File without changes

3

修正。

2016/08/06 06:11

投稿

maguroyamiy
maguroyamiy

スコア12

test CHANGED
File without changes
test CHANGED
@@ -4,13 +4,23 @@
4
4
 
5
5
  //"~"より前の文字を切り出して出勤時間のみ取得
6
6
 
7
+ //"15:00"
8
+
7
9
  $in = substr($schedule, 0, strcspn($schedule,'~'));
8
10
 
11
+
12
+
9
- //"~"より後ろの文字を切り出して退勤時間のみ取得
13
+ //"~"より後ろの文字を切り出して退勤時間のみ取得
14
+
15
+ //"~20:00"
10
16
 
11
17
  $out2 = strstr($schedule, "~");
12
18
 
19
+
20
+
13
- //これでは"~"が残ってしまうので除去
21
+ //これでは"~"が残ってしまうので除去
22
+
23
+ //"20:00"
14
24
 
15
25
  $out = str_replace("~","",$out2);
16
26
 
@@ -26,38 +36,26 @@
26
36
 
27
37
  PHP初心者です。Goutteでスクレイピングをしています。
28
38
 
29
- わからない点が2つあります。
30
39
 
31
40
 
32
41
 
33
-
34
42
 
35
- ある箇所から上記のように出勤と退勤を抽出しているのですが、ごくまれに
43
+ あるところから上記のように出勤と退勤を抽出しているのですが、ごくまれに
44
+
45
+ ```
36
46
 
37
47
  $schedule = "15:00~20:00/20:00~翌4:00"
48
+
49
+ ```
38
50
 
39
51
  と言った表記があります。
40
52
 
41
53
 
42
54
 
43
- この「~」が2つあり、出勤時間の[15:00]及び退勤時間の[翌4:00]を取りた場合、
55
+ もし「~」が2つあるなら (あるは文字列に「/」が含まれているなら)
44
56
 
45
- のような条件でコードを書けばいいでょうか。
57
+ 最後「~」り後ろの文字切り出て退勤時間(翌4:00)のみ取得
46
-
47
- また、必ずしも[翌]がつくわけではありません。
48
58
 
49
59
 
50
60
 
51
-
52
-
53
-
54
-
55
- $schedule = "15:00~20:00 入り"
56
-
57
- $schedule = "15:00~20:00 [終]"
58
-
59
- このようなケースもあります。
60
-
61
- このまま退勤時間を取ると後ろの「入り」や「[終]」という文字も含まれてしまうので
62
-
63
- 「数字」「:」以外削除したいのですが場合の正規表現?はどうなります
61
+ いう条件をしたいのですが、どうなコードになるでしょう

2

修正

2016/08/06 06:07

投稿

maguroyamiy
maguroyamiy

スコア12

test CHANGED
File without changes
test CHANGED
@@ -54,8 +54,10 @@
54
54
 
55
55
  $schedule = "15:00~20:00 入り"
56
56
 
57
+ $schedule = "15:00~20:00 [終]"
58
+
57
59
  このようなケースもあります。
58
60
 
59
- このまま退勤時間を取ると後ろの「入り」という文字も含まれてしまうので
61
+ このまま退勤時間を取ると後ろの「入り」や「[終]」という文字も含まれてしまうので
60
62
 
61
63
  「数字」と「:」以外を削除したいのですがこの場合の正規表現?はどうなりますか?

1

修正

2016/08/02 10:36

投稿

maguroyamiy
maguroyamiy

スコア12

test CHANGED
File without changes
test CHANGED
@@ -8,11 +8,11 @@
8
8
 
9
9
  //"~"より後ろの文字を切り出して退勤時間のみ取得
10
10
 
11
- $out = strstr($schedule, "~");
11
+ $out2 = strstr($schedule, "~");
12
12
 
13
13
  //これでは"~"が残ってしまうので除去
14
14
 
15
- $out = str_replace("~","",$out_value);
15
+ $out = str_replace("~","",$out2);
16
16
 
17
17
  ```
18
18