【HSP】URL文字列を分解する【モジュール】
【HSP】URL文字列を分解する【モジュール】
//
// URL分解モジュール (仮) by kerupani129
//#ifndef strsockh
#define strsockh#module strsock
#deffunc spliturl var url, array result
// 変数準備
result.0 = ""
result.1 = ""
result.2 = ""
result.3 = ""
result.4 = ""
char = 0 // 1[byte]
type = 0 // scheme, authority, path, query, fragment
strpos = 0 // 位置
repeat
// 1[byte]読み込み
char = peek(url, cnt)
// typeチェック
switch char
case '/' // path, query, fragment
if type<2 {
if strpos==cnt && peek(url, cnt+1)=='/' {
strpos = cnt
type = 1
continue cnt+2
} else {
strpos = cnt
type = 2
}
}
swbreak
case '?' // query, fragment
if type<3 {
strpos = cnt
type = 3
}
swbreak
case '#' // fragment
if type<4 {
strpos = cnt
type = 4
}
swbreak
case 0x00
break
swbreak
default
if type==1 {
if strpos==cnt { // path, query, fragment
strpos = cnt
type = 2
}
}
swbreak
swend
// 文字列切り取り
switch type
case 0
// scheme/path 対応 仮
// result.0 += strmid(url, cnt, 1)
result.2 += strmid(url, cnt, 1)
swbreak
case 1
result.1 += strmid(url, cnt, 1)
swbreak
case 2
result.2 += strmid(url, cnt, 1)
swbreak
case 3
result.3 += strmid(url, cnt, 1)
swbreak
case 4
result.4 += strmid(url, cnt, 1)
swbreak
swend
// typeチェック
if char==':' { // authority, path, query, fragment
if type<1 {
// scheme/path 対応 仮
result.0 = result.2
result.2 = ""
//
strpos = cnt+1
type = 1
}
}
loop
return#global
#endif
spliturl var1, var2
var1 : 元のURLが入った文字列型変数
var2 : 結果を代入する文字列型配列変数
sdim result, 64, 5 // 配列5個分あればよい
url = "http://www.youtube.com/watch?v=EhD4U_PcNtg#watch-headline-title" // 自由に書き換えてネ
spliturl url, result // これで変換
mes "スキーム : "+result.0
mes "オーソリティー : "+result.1
mes "パス : "+result.2
mes "クエリ : "+result.3
mes "フラグメント : "+result.4
■URLの簡単な説明
おおっこれは面白いですね^^!!
そしてこれらはクエリとかフラグメントとかいう名前だったのですね……
参考になりました。ありがとうなのです@@
ありがとうございます!
そうらしいです~。どういたしまして。