teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

4

題名

2016/08/06 06:11

投稿

maguroyamiy
maguroyamiy

スコア12

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

3

修正。

2016/08/06 06:11

投稿

maguroyamiy
maguroyamiy

スコア12

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
- の「~」が2つあ、出勤時間[15:00]及び退勤時間の[翌4:00]をりたい場合、
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

修正

2016/08/06 06:07

投稿

maguroyamiy
maguroyamiy

スコア12

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

修正

2016/08/02 10:36

投稿

maguroyamiy
maguroyamiy

スコア12

title CHANGED
File without changes
body CHANGED
@@ -3,9 +3,9 @@
3
3
  //"~"より前の文字を切り出して出勤時間のみ取得
4
4
  $in = substr($schedule, 0, strcspn($schedule,'~'));
5
5
  //"~"より後ろの文字を切り出して退勤時間のみ取得
6
- $out = strstr($schedule, "~");
6
+ $out2 = strstr($schedule, "~");
7
7
  //これでは"~"が残ってしまうので除去
8
- $out = str_replace("~","",$out_value);
8
+ $out = str_replace("~","",$out2);
9
9
  ```
10
10
 
11
11