質問編集履歴

5

データ利用目的と、PHP変数で受け取る理由を冒頭に追記。最下部にその後試したことを追記。

2020/02/08 03:14

投稿

minamino
minamino

スコア7

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,35 @@
2
2
 
3
3
 
4
4
 
5
+ ### ゴール
6
+
7
+ APIから取り出したJSON風のデータ型から、
8
+
9
+ 【JavaScript/CSS でカラオケ風テロップ表示】
10
+
11
+ https://pronama.jp/2015/03/20/karaoke-telop/
12
+
13
+ のように、
14
+
15
+ 歌詞・タイムスタンプを『フレーズごとに個別に』取り出してJavascriptで
16
+
17
+ カラオケ風に表示する事。
18
+
19
+ ※私が唯一まともに扱える言語がPHPのため、PHPの変数で受け取れるととても嬉しいです。
20
+
21
+ しかし、結論無理なら、
22
+
23
+ JSON.stringify
24
+
25
+ JSON.parse
26
+
27
+ といった関数を1から勉強してみます。
28
+
29
+
30
+
31
+ ### 今回実現したい事
32
+
5
- ### 以下のファイルを、PHPでパースしたいです。
33
+ 以下の型のファイルを、PHPでパースしたい
6
34
 
7
35
 
8
36
 
@@ -14,9 +42,7 @@
14
42
 
15
43
 
16
44
 
17
- しかし、シングルクオートが混ざってるので、JSON(風)です。JSONにすればいいのに、との修正依頼ありがとうございます。
45
+ しかし、シングルクオートが混ざってるので、JSON(風)です。JSONにすればいいのに、との修正依頼ありがとうございます。私もスマートじゃ無いと思います。
18
-
19
- 私もスマートじゃ無いと思います。
20
46
 
21
47
 
22
48
 
@@ -65,3 +91,41 @@
65
91
  このファイル形式を正しくはなんと言うのかも、合わせてご指導頂けると嬉しいです。
66
92
 
67
93
  宜しくお願い致します。
94
+
95
+
96
+
97
+ ### その後試した事
98
+
99
+ 無理やり置換処理。しかし、文字列にクオートが混ざった段階で、どこかで破たんする
100
+
101
+ ```foo.php
102
+
103
+ $content=str_replace("\"","'",$content);
104
+
105
+ $content=str_replace("{'","{\"",$content);
106
+
107
+ $content=str_replace("': ","\": ",$content);
108
+
109
+ $content=str_replace(": '",": \"",$content);
110
+
111
+ $content=str_replace("'}","\"}",$content);
112
+
113
+ $content=str_replace("', 'start","\", \"start",$content);
114
+
115
+ $content=str_replace("', 'text","\", \"text",$content);
116
+
117
+ $content=str_replace("', 'duration","\", \"duration",$content);
118
+
119
+ $content=str_replace(", 'start",", \"start",$content);
120
+
121
+ $content=str_replace(", 'text",", \"text",$content);
122
+
123
+ $content=str_replace(", 'duration",", \"duration",$content);
124
+
125
+ $content=str_replace("\'","'",$content);
126
+
127
+ $content=str_replace(",'",",\"",$content);
128
+
129
+ $content=str_replace("}, {","},\n {",$content);
130
+
131
+ ```

4

2020/02/08 03:14

投稿

minamino
minamino

スコア7

test CHANGED
File without changes
test CHANGED
@@ -56,9 +56,9 @@
56
56
 
57
57
 
58
58
 
59
- 読みこむJSON(仮)ファイル内の、シングルクオートを一旦エスケープして、ファイル全体を
59
+ 読みこむJSON(仮)ファイル内の、全体を
60
60
 
61
- str_replaceでダブルクオートに置換して、しまうですとか、、、
61
+ str_replaceでダブルクオートに置換して、シングルクオート(だった箇所のみ)エスケープするですとか、、、
62
62
 
63
63
  なんなり方法はありそうですが、よりスマートな方法をご教授くださいませ。
64
64
 

3

2020/02/05 23:30

投稿

minamino
minamino

スコア7

test CHANGED
File without changes
test CHANGED
@@ -1,3 +1,7 @@
1
+ 初心者です。
2
+
3
+
4
+
1
5
  ### 以下のファイルを、PHPでパースしたいです。
2
6
 
3
7
 
@@ -10,7 +14,13 @@
10
14
 
11
15
 
12
16
 
13
- しかし、文字列にシングルクオートが混ざってるので、
17
+ しかし、シングルクオートが混ざってるので、JSON(風)です。JSONにすればいいのに、との修正依頼ありがとうございます。
18
+
19
+ 私もスマートじゃ無いと思います。
20
+
21
+
22
+
23
+ さて、このままだと
14
24
 
15
25
  大元のJSON(仮)ファイルの、各配列の括り方が、シングルクオートとダブルクオートが混ざり、エラーが出てしまいます。Pythonだと、literal_eval、というサポート関数があるようなのですが、PHPには、何かデータフォーマットを柔軟に読み込んでくれる書き方はありますでしょうか?
16
26
 
@@ -48,9 +58,9 @@
48
58
 
49
59
  読みこむJSON(仮)ファイル内の、シングルクオートを一旦エスケープして、ファイル全体を
50
60
 
51
- str_replaceでダブルクオートに置換してしまうですとか、、、
61
+ str_replaceでダブルクオートに置換してしまうですとか、、、
52
62
 
53
- なんなり方法はありそうですが、、、正しく、スマートな方法をご教授くださいませ。
63
+ なんなり方法はありそうですが、よりスマートな方法をご教授くださいませ。
54
64
 
55
65
  このファイル形式を正しくはなんと言うのかも、合わせてご指導頂けると嬉しいです。
56
66
 

2

2020/02/05 23:27

投稿

minamino
minamino

スコア7

test CHANGED
@@ -1 +1 @@
1
- 【データフォーマット】シングルクオートとダブルクオートが混ざってるJSONのパース方法【PHP】
1
+ 【データフォーマット】シングルクオートとダブルクオートが混ざってるJSON(仮)のパース方法【PHP】
test CHANGED
@@ -46,10 +46,12 @@
46
46
 
47
47
 
48
48
 
49
- 読みこむJSONファイル内の、シングルクオートを一旦エスケープして、ファイル全体を
49
+ 読みこむJSON(仮)ファイル内の、シングルクオートを一旦エスケープして、ファイル全体を
50
50
 
51
51
  str_replaceでダブルクオートに置換してしまうですとか、、、
52
52
 
53
53
  なんなり方法はありそうですが、、、正しく、スマートな方法をご教授くださいませ。
54
54
 
55
+ このファイル形式を正しくはなんと言うのかも、合わせてご指導頂けると嬉しいです。
56
+
55
57
  宜しくお願い致します。

1

大元のJSONファイルを、置換して対応する選択肢を追記

2020/02/05 22:31

投稿

minamino
minamino

スコア7

test CHANGED
File without changes
test CHANGED
@@ -46,4 +46,10 @@
46
46
 
47
47
 
48
48
 
49
+ 読みこむJSONファイル内の、シングルクオートを一旦エスケープして、ファイル全体を
50
+
51
+ str_replaceでダブルクオートに置換してしまうですとか、、、
52
+
53
+ なんなり方法はありそうですが、、、正しく、スマートな方法をご教授くださいませ。
54
+
49
55
  宜しくお願い致します。