質問編集履歴
4
題名
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
|
1
|
+
PHPで特殊な条件での取得
|
body
CHANGED
File without changes
|
3
修正。
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,10 +1,15 @@
|
|
1
1
|
```
|
2
2
|
$schedule = "15:00~20:00"
|
3
3
|
//"~"より前の文字を切り出して出勤時間のみ取得
|
4
|
+
//"15:00"
|
4
5
|
$in = substr($schedule, 0, strcspn($schedule,'~'));
|
6
|
+
|
5
|
-
|
7
|
+
//"~"より後ろの文字を切り出して退勤時間のみ取得
|
8
|
+
//"~20:00"
|
6
9
|
$out2 = strstr($schedule, "~");
|
10
|
+
|
7
|
-
|
11
|
+
//これでは"~"が残ってしまうので除去
|
12
|
+
//"20:00"
|
8
13
|
$out = str_replace("~","",$out2);
|
9
14
|
```
|
10
15
|
|
@@ -12,21 +17,15 @@
|
|
12
17
|
###前提・実現したいこと
|
13
18
|
|
14
19
|
PHP初心者です。Goutteでスクレイピングをしています。
|
15
|
-
わからない点が2つあります。
|
16
20
|
|
17
|
-
|
21
|
+
|
18
|
-
ある
|
22
|
+
あるところから上記のように出勤と退勤を抽出しているのですが、ごくまれに
|
23
|
+
```
|
19
24
|
$schedule = "15:00~20:00/20:00~翌4:00"
|
25
|
+
```
|
20
26
|
と言った表記があります。
|
21
27
|
|
28
|
+
もし「~」が2つあるなら (あるいは文字列に「/」が含まれているなら)
|
22
|
-
|
29
|
+
最後の「~」より後ろの文字切り出して退勤時間(翌4:00)のみ取得
|
23
|
-
どのような条件でコードを書けばいいでしょうか。
|
24
|
-
また、必ずしも[翌]がつくわけではありません。
|
25
30
|
|
26
|
-
|
27
|
-
②
|
28
|
-
$schedule = "15:00~20:00 入り"
|
29
|
-
$schedule = "15:00~20:00 [終]"
|
30
|
-
このようなケースもあります。
|
31
|
-
このまま退勤時間を取ると後ろの「入り」や「[終]」という文字も含まれてしまうので
|
32
|
-
|
31
|
+
という条件をしたいのですが、どのようなコードになるでしょうか。
|
2
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -26,6 +26,7 @@
|
|
26
26
|
|
27
27
|
②
|
28
28
|
$schedule = "15:00~20:00 入り"
|
29
|
+
$schedule = "15:00~20:00 [終]"
|
29
30
|
このようなケースもあります。
|
30
|
-
このまま退勤時間を取ると後ろの「入り」という文字も含まれてしまうので
|
31
|
+
このまま退勤時間を取ると後ろの「入り」や「[終]」という文字も含まれてしまうので
|
31
32
|
「数字」と「:」以外を削除したいのですがこの場合の正規表現?はどうなりますか?
|
1
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -3,9 +3,9 @@
|
|
3
3
|
//"~"より前の文字を切り出して出勤時間のみ取得
|
4
4
|
$in = substr($schedule, 0, strcspn($schedule,'~'));
|
5
5
|
//"~"より後ろの文字を切り出して退勤時間のみ取得
|
6
|
-
$
|
6
|
+
$out2 = strstr($schedule, "~");
|
7
7
|
//これでは"~"が残ってしまうので除去
|
8
|
-
$out = str_replace("~","",$
|
8
|
+
$out = str_replace("~","",$out2);
|
9
9
|
```
|
10
10
|
|
11
11
|
|