-
Notifications
You must be signed in to change notification settings - Fork 4
/
267.txt
528 lines (383 loc) · 24.8 KB
/
267.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
[8] 色々な[[ソフトウェア]]で[[平文]]や[[利用者]]の入力文、
あるいは [[HTMLメール]]の[[地の文]]などから、
[[URL]] らしき部分を自動的に検出し、これを[[リンク]]として表示する[DFN[自動リンク]]機能が備わっています。
[9] 中には [[URL]] の、あるいは [[HTTP(S) URL]] など一部の [[URL]]
の構文を機械的に[[正規表現]]に変換しただけのような雑な実装もありますが、
実用上十分良好な[[利用者体験]]を提供するためには、
細かな調整が必要となります。
;; [12] 実装の中には、 [[HTML]] の[[文字参照]]への変換と [[URL自動リンク]]の処理順序が不適切であるなど、
他の処理との兼ね合いで異常な動作をしたり、[[セキュリティー]]上の問題をはらんでいたりするものもあります。
[57]
[[URL]] の他に、[[メールアドレス]]、[[電話番号]]、[[アプリケーション]]依存の構造
([[ハッシュタグ]]など) でも同様の仕組みが使われることがよくあります。
[58]
本項では特に断らない限り [[URL]] の[[自動リンク]]を扱いますが、
それ以外の[[自動リンク]]にも触れます。
* 実装戦略
[78]
[[URL]] の構文を[[正規表現]]のようなものに置き換えて[[一致]]させて[[リンク]]を作ればいいだけではないのだろうか、
と安易に考えがちですが、それだけでは実用的なものになりません。
簡単そうに見えて、これは思っている以上に複雑な問題なのです。
[79]
明文化された手順や有名な実装だけでもいくつもありますが、
それぞれ違った方針で違った特徴を持ったものになっています。
それぞれに欠点もあります。
[REFS[
- [153] [CITE@en[19313 – More checks for URIs]] ([TIME[2016-03-03 16:30:00 +09:00]] 版) <https://bugzilla.mozilla.org/show_bug.cgi?id=19313>
- [154] [CITE@en[gecko-dev/mozTXTToHTMLConv.cpp at master · mozilla/gecko-dev]] ([TIME[2016-03-03 16:33:01 +09:00]] 版) <https://github.com/mozilla/gecko-dev/blob/master/netwerk/streamconv/converters/mozTXTToHTMLConv.cpp#L481>
-- [155] [CITE[Ben Bucksch - Projects - Mozilla - TXT->HTML Conversion]] ([TIME[2008-09-23 10:39:27 +09:00]] 版) <http://www.bucksch.org/1/projects/mozilla/16507/>
- [29] [CITE@ja[電子メール本文での日本語ドメイン名URL記述ガイド - 日本語.jp]]
([TIME[2015-10-15 22:13:24 +09:00]] 版)
<http://nihongojp.jp/support/mail_guide/writing.html>
- [30] [CITE[日本語ドメイン名URLクリック対応アプリケーション開発者ガイド ~メーラー編~]]
([TIME[2007-01-29 16:06:18 +09:00]] 版)
<http://nihongojp.jp/support/mail_guide/dev_guide.txt>
- [72] [CITE[Linkification of URLs - Google ドキュメント]]
( ([TIME[2014-05-24 03:35:02 +09:00]] 版))
<https://docs.google.com/document/d/1h9yPmUScIGt9gEquLjgf739GfEy8QJ6WG_hsc-OTkBU/edit?pli=1>
]REFS]
* 境界の処理
[2] 「This is great: https://example.com/great.html. Thanks!」 の最後の「.」は
[[URL]] の一部ではなく[[英文]]の一部と解釈する必要があります。
[3] とすると「See www.example.com.」も [CODE[www.example.com.]] を表すのではなさそうです。
[4] 「See https://example.com/great.html, please.」 の「,」は
[[URL]] の一部ではなく[[英文]]の一部と解釈する必要があります。
;; [48] これを正しく扱えない[[メーリングリスト]]アーカイブ生成ソフトウェアがあります。
[TIME[2020-09-25T01:51:53.700Z]]
[5] 「https://example.com/page[CODE(char)[U+3000]]です」は、
[CODE(char)[U+3000]] の前までを [[URL]] と解釈する必要があります。
;; [6] [[GitHub]] はこれを正しく扱えません。 [TIME[2016-08-10T03:43:06.200Z]]
[7] 「... (https://test.test/foo)、...」
で [[GitHub]] は [CODE[)]] のあともずっと [[URL]] の一部とみなします。
[TIME[2016-08-22T14:36:26.700Z]]
[13] [[はてなブックマーク]]の[[ブックマークコメント]]では、 [[URL]] の後に「>」
があると、「>」まで [[URL]] の一部とみなします。 [TIME[2017-01-19T10:27:49.100Z]]
[14] [[掲示板]]の自動リンクで、 [CODE[#!]] のような [CODE[!]] が [[URL]]
の一部と見なされず、その直前までが [[URL]] とみなされることがあります。
[15] [[W3C]] の[[メーリングリスト]]のアーカイブ:
[CITE@en[Re: Breaking the `opener` relationship.]] ([[Mike West]]著, [TIME[2017-04-28 17:10:13 +09:00]]) <https://lists.w3.org/Archives/Public/public-webappsec/2017Apr/0078.html>
は、なぜか
> `WindowProxy`'s `[[GetOwnProperty]]` uses
https://html.spec.whatwg.org/#isplatformobjectsameorigin-(-o-): I'd just
stick with that as a determinant of the properties listed in
https://html.spec.whatwg.org/#crossoriginproperties-(-o-).
を
> `WindowProxy`'s `[[GetOwnProperty]]` uses
<https://html.spec.whatwg.org/#isplatformobjectsameorigin-(-o>-): I'd just
stick with that as a determinant of the properties listed in
<https://html.spec.whatwg.org/#crossoriginproperties-(-o>-).
と解釈します。
[19] [CITE@ja[みのさんのツイート: "https://t.co/927QpBK32e!"]]
([TIME[2017-12-23 13:27:17 +09:00]])
<https://twitter.com/mino90h/status/873210646183026689>
[20] [CODE[!]] で終わる [[URL]] を [[Twitter]] は [CODE[!]] の直前まで [[URL]] と認識。
[21] [[GitHub]] は
[CODE[href="https://example.com/">Example Web Page</a>]]
の「https:」から「Example」
までを1つの [[URL]] とみなします。
[TIME[2018-01-14T00:27:17.600Z]]
[FIG(quote)[
[FIGCAPTION[
[1] [CITE[Latest topics > Text LinkとLinkification - outsider reflex]]
([[YUKI "Piro" Hiroshi]] 著, [TIME[2016-03-03 16:56:45 +09:00]] 版)
<http://piro.sakura.ne.jp/latest/blosxom/mozilla/extension/2006-03-10_textlink.htm>
]FIGCAPTION]
> 「http://www.<em>mozilla</em>.org/」みたいに複数のテキストノードに分割されたURIも認識できる。
> 某新聞社のサイトのように「http://piro.sakura.ne.jp/」ってな全角文字で書かれたURIも認識できる。
> 2chでよくある「ttp://」で始まるURIも認識できる。ていうか最初はこれが目的だったんだよね……
]FIG]
[42]
[[LimeChat]] は
[CODE[《http://example.jp/abc-def/》]]
の最後の括弧まで
[[URL]]
と認識してしまいます。
[TIME[2020-02-17T01:19:15.400Z]]
[51] [CITE['''['''tz''']''' Some time zone history (2)]], [TIME[2020-11-30T15:48:50.000Z]], [TIME[2020-12-03T03:03:42.245Z]] <https://mm.icann.org/pipermail/tz/2020-November/029514.html>
> https://parliament.gov.gy/documents/acts/10923-act_no._27_of_1975_-_interpretation_and_general_clauses_(amendment)_act_1975.pdf
「)」の直前の「t」までで [[URL]] が終わると誤認してしまっています。
[53]
[CITE@ja['''['''JavaScript''']''' PCのタイムゾーン・[[時差]]情報の活用: Kawanet Blog II]], [TIME[2022-07-16T01:23:09.000Z]] <https://kawa.at.webry.info/200610/article_1.html>
>>
[PRE(code)[
location.href = '[ASIS[http://www.kawa.net/xp/index-j.html';][リンク]]
]PRE]
[[ブログ]]ソフトウェアの[[自動リンク]]によるものか。
* 非ASCII文字
[27] かつては [[URL]] には[[非ASCII文字]]は認められていなかったので、
[[日本語]]などの[[非ASCII文字]]主体の[[文章]]では
[[URL]] とその周りの区切りは比較的明確でした。
[28] ところが [[URL]] で[[非ASCII文字]]一般が認められるようになってから、
[[URL]] の直後に[[文章]]が続いているものと [[URL]] に[[非ASCII文字]]が含まれるものの区別が難しくなりました。
[31] [[素片識別子]]に[[非ASCII文字]]を含む語が書かれている場合や、
[[パス]]に[[見出し語]]が入る [[Wikipedia]] の [[URL]] の場合のように、
[[非ASCII文字]]が含まれる [[URL]] が書かれることは少なくないため、
何らかの対応は必須といえます。
* リンク回避
[22] [[自動リンク]]機能のある[[掲示板]]などの[[利用者]]は、
[[自動リンク]]を敢えて回避することを好む場合があります。
[23] そのため [CODE[http:]] の [CODE[h]] を省略した [CODE[ttp:]]
のような [[URL]] が用いられることもあります。
;; [CODE[ttp:]] 参照。
[24] しかしそうした[[自動リンク]]を回避した [[URL]] を敢えて[[自動リンク]]し[[リンク]]をたどる[[利用者]]の便を図る[[実装]]もあります。
[EG[
[43]
[[2ch]]
では[[自動リンク]]回避のため [CODE[ttp:]] [[URL]]
の文化が発達しました。
[[専用ブラウザー]]はこれを
[CODE[http:]]
[[URL]]
と解釈して[[自動リンク]]していました。
]EG]
* URL scheme の省略
[32] [[ドメイン名]]のみを書いたり、
[[ドメイン名]]から始まる不完全な [[URL]] を書いたりして[[省略][URLの省略]]して
[[HTTP(S) URL]] を表すこともあります。
[[自動リンク]]の実装の中には、そうした不完全なものも抽出しようと試みるものがあります。
* ドメイン名のみの自動リンク
[59]
[[ドメイン名]]のみで構成される文字列が[[自動リンク]]されることがあります。
[60]
そのような実装の多くは [CODE[http://]] を補います。
[61]
実はそれほど役に立つ場面は多くなく、最近はあまり実装されていない印象があります。
[62]
[[ドメイン名]]は [[HTTP(S) URL]] 以外にも色々な用途がありますが、
[[HTTP]] 以外の [[URL]] と解釈するものは見たことがありません。
[[HTTP]] の場合以上に[[自動リンク]]化したい需要がないということなのでしょう。
[63]
[[IDN]] 対応すると、[[句読点]]を含んだほとんどどんな文字列も[[ドメイン名]]扱いしてしまうことになります。
既知の [[TLD]] で終わるかどうかで制限すれば幾分ましになりますが、
近年 [[TLD]] はどんどん追加されていますから、追随すればするほど悪化します。
しかし [[IDN]] もそれほど使わていないのが現状で、
わざわざ対応して使い勝手を落とす必要性は疑問です。
* URL 以外の自動リンク
[39] [[メールアドレス]]や[[電話番号]]が[[自動リンク]]されることがしばしばあります。
[66]
[[メールアドレス]]は[[平成時代]]中頃まではよく[[自動リンク]]の対象になっていました。
その後は (私的、娯楽的領域における) [[インターネットメール]]の衰退のためか、
対象とされなくなってきている印象があります。
ただし [[MUA]] では依然として対象になっています。
[67]
[[電話番号]]は[[スマートフォン]]の普及
(= [[自動リンク]]された[[媒体]]を閲覧する端末と[[電話機]]の統合)
により[[自動リンク]]の対象に含まれがちになってきている印象があります。
ただし[[自動リンク]]されるような[[媒体]]で[[電話番号]]の[[自動リンク]]を使って[[利用者]]が[[電話]]したり、[[アドレス帳]]に登録したり、
といった需要があるのかは、疑問もあります。
[65]
[[Webブラウザー]]が[[自動リンク]]機能を実装し、 [CODE[a]] [[要素]]がなくても[[リンク]]表示することがあります。
[CODE[x-ms-format-detection]] も参照。
[68]
[[メールアドレス]]は [CODE[mailto:]], [[電話番号]]は [CODE[tel:]]
が暗示されているとみなすことで、[[URL]] の[[自動リンク]]の特殊形として扱うことができます。
-*-*-
[64]
その他に[[アプリケーション]]依存の識別子などの自動抽出・リンク化が実装されていることがあります。
[69]
[[Wiki]] は元々 [[WikiName]] と呼ばれる独特の名前文字列構文に一致するものをリンク先ページ名とみなして[[自動リンク]]するシステムでした。
[70]
[[Wiki]] の中には、伝統的な [[WikiName]] 構文でなくとも、
データベース中のページ名に一致する任意の[[文字列]]を検出し[[自動リンク]]するものもありました。
商用サービスでは[CITE[はてなダイアリー]]の実装例が有名で、
[CITE[はてなキーワード]]の登録[[キーワード]]に一致すると
(特別な構文を使わなくても) 自動的に当該[[キーワード]]へのリンクとなりました。
[71]
近年では多くの[[Webサービス]]や[[SNS]]が[[ハッシュタグ]]を実装しています。
[[ハッシュタグ]]は [CH[#]] から始まる文字列を分類キーワードとみなすもので、
文中にその形式の[[文字列]]があれば[[自動リンク]]されます。
[73]
[[ハッシュタグ]]中に使える[[文字]]は、採用サービスによって少しずつ違います。
統一的な規定はありません。
[74]
昔の [CITE[Twitter]] は[[ASCII文字]]しか使えませんでした。
[[日本]]のものでも昔から使われ続けている[[ハッシュタグ]]は[[ASCII英数字]]だけだったりします。
[75]
しかし多くの人に普及したサービスではやはり[[ASCII文字]]のみという制限は非現実的であり
(文化的多様性を否定する差別的取り扱いでもあり)、
現在では多くのサービスが[[非ASCII文字]]を認めています。
[76]
ところが[[記号]]類の扱いはサービスによって違っています。
サービスによっては通常表記に必要な文字まで[[記号]]とみなすためか、
[[ハッシュタグ]]で使えないことがあります。
[77]
たとえば [CITE[YouTube]] は[[仮名]]の[[長音記号]][CH[ー]]の[[異体字]]として使われる[CH[〜]]
([SEE[ [[長音記号]] ]])
を[[ハッシュタグ]]に認めていません。
普通に使えると誤解して使ってみたら使えなかったという[[日本人]]の[[利用者]]が困っている現実があります。
[TIME[2024-05-10T13:12:50.900Z]]
[40] [[smart tag]] も参照。
[85] [[LINE]] では[[金額]]が[[リンク化]]されます。 [SRC[>>84, >>86]]
[REFS[
[FIG(quote)[
[FIGCAPTION[
[84]
[CITE@ja[ヘルプセンター]], [[LINE]], [TIME[2024-06-16T22:00:12.000Z]] <https://help.line.me/line/android/categoryId/20008811/3/pc?lang=ja&contentId=20023821>
]FIGCAPTION]
>
金額テキストのリンク表示やリンクを使用した送金(送付)は、以下の条件を全て満たす場合のみ可能です。
>
>- 1:1またはグループトークルームで送信されたメッセージ
>- 送信されたメッセージに数値と通貨単位(¥、円、yen)が一緒に表記されている
>※数値と通話単位の間には空欄(半角スペース)1つまで入力できます
>- 金額が1円~100,000円の範囲内
>-(リンクを利用して送金する場合)LINE Payに加入済み
>- LINEの最新バージョンを利用している
]FIG]
[FIG(quote)[
[FIGCAPTION[
[86]
[CITE@th[ศูนย์ช่วยเหลือ]], [[LINE]], [TIME[2024-06-16T22:04:48.000Z]] <https://help.line.me/line/smartphone/pc?lang=th&contentId=20023821>
]FIGCAPTION]
>
สามารถส่งเงินผ่านลิงก์ดังกล่าวได้ต่อเมื่อครบตามเงื่อนไขต่อไปนี้ทั้งหมดเท่านั้น
>
>- อยู่ในห้องแชทแบบตัวต่อตัว
>- คุณและเพื่อนในห้องแชทสมัครใช้บริการ Rabbit LINE Pay และ LINE BK เรียบร้อยแล้ว
>- รับส่งข้อความที่มีตัวเลขและสกุลเงินระบุร่วมกัน โดยมีช่องว่างระหว่างตัวเลขกับสกุลเงินไม่เกิน 1 ช่อง
> * ตัวเลขต้องเป็นจำนวนเต็ม หรือจำนวนทศนิยมไม่เกิน 2 ตำแหน่ง
> * คำระบุสกุลเงินที่ใช้ได้ ได้แก่ THB, Baht, บาท, ฿ โดยตัวอักษรภาษาอังกฤษเป็นพิมพ์เล็กหรือพิมพ์ใหญ่สลับกันได้
> * ตัวอย่าง : 1,000 THB, 100Baht, 10.50บาท, ฿20
>- ใช้งานแอปพลิเคชัน LINE เวอร์ชันล่าสุด (อัปเดต ที่นี่)
]FIG]
]REFS]
* 対応する URL scheme
[10] 任意の [[URL]] を自動リンク化すると、 [CODE[:]] さえ入っていればほとんどどんな文章でも一部が
[[URL]] ということになってしまいます。
[35] 一般的な実装は特定の [[URL scheme]] のみに対応しています。
[[HTTP(S) URL]] のみに対応する最低限のものから、
それ以外の色々な [[URL]] に対応するものまであります。
[FIG(short list)[ [36] よく対応されている [[URL scheme]]
- [CODE[http:]]
- [CODE[https:]]
- [CODE[ftp:]]
- [CODE[mailto:]]
- [CODE[nntp:]]
- [CODE[news:]]
- [CODE[ttp:]]
- [CODE[ttps:]]
]FIG]
[11] [CODE(URI)@en[javascript:]] など、危険な動作を誘引する [[URL scheme]]
もあります。無邪気な実装は[[セキュリティーホール]]となりかねません。
* 区切り文字
[25] 古い [[URL]] の [[RFC]] では、[[自然言語]]文に [[URL]] を混ぜる場合は区切りとして
[CODE[<]] と [CODE[>]] で括るのが好ましいという記述がありました。
そのため [[URL]] の前後に [CODE[<]] と [CODE[>]] を書くことをよしとする人もいます。
しかしこの慣習は一般には普及しませんでしたし、
[[Web]] 技術に詳しい人の中でもそこまで有名ではありません。
(が無視するのは惜しいほどには普及しています。)
[26] [CODE[<]] と [CODE[>]] は通常の [[URL]] には含まれないものですから、
[[自動リンク]]の実装は特に考慮しなくてもこの区切り文字を意図通りに解釈すると期待されます。
しかし[[文字参照]]の扱いが杜撰な[[自動リンク]]の実装に誤解釈されることもあるようです
(例えば >>13)。
[FIG(quote)[
[FIGCAPTION[
[18] [CITE@en[RFC 7322 - rfc Style Guide]]
([TIME[2017-10-22 17:40:00 +09:00]])
<https://tools.ietf.org/html/rfc7322#section-3.3>
]FIGCAPTION]
> Angle brackets are strongly recommended around URIs '''['''STD66''']''', e.g.,
<http://example.com/>
]FIG]
* 自動リンク機能付きマーク付け言語
[33] [[Wiki構文]]など[[テキスト]]系の[[マーク付け言語]]は、
[[自動リンク]]機能を言語の一部として組み込んでいることがよくあります。
[34] [[はてな記法]]は [[URL]] の[[自動リンク]]の他に、
[CITE[はてなキーワード]]のキーワード[[自動リンク]]などもあります。
[83]
[[Markdown]] の実装の多くは[[URL]]の[[自動リンク]]も行います。
[17] [CITE[GitHub Flavored Markdown Spec]]
([TIME[2017-05-15 12:05:46 +09:00]])
<https://github.github.com/gfm/#autolinks-extension->
[80]
[[マーク付け言語]]系の[[自動リンク]]には、それ独特の難しさがあります。
[[マーク付け言語]]の構文を構成する記号類は [[URL]] とみなしてはいけません。
しかし [[URL]] の中にそのような記号が含まれることもあります。
[[マーク付け言語]]の[[エスケープ]]構文を使わせるのが筋ですが、
書きやすさを犠牲にしてしまいます。
[81]
問題を避けるには、[[マーク付け言語]]を慎重に設計する、なんなれば[[マーク付け言語]]の設計に[[自動リンク]]を組み込む必要があります。
そうなると[[マーク付け言語]]の構造の検知と [[URL]] の検出は同時に行う必要があります。
[[構文解析]]が済んでから[[自動リンク]]へという処理の分離ができなくなります。
[82]
例えば [CODE[pre]] [[要素]]相当の構造の中では[[自動リンク]]機能を停止したい、
のように[[自動リンク]]の制御と[[マーク付け言語]]の機能の連動の要件も出てくると、
実装方針はますます制約されることになります。
* 文脈
[37] 次のような分野で使われています。
[FIG(short list)[ [38] [[自動リンク]]する場面
- [[UGC]] 系 [[Webアプリケーション]]
-- [[掲示板]]
-- [[チャット]]
-- [[コメント]]
-- [[Wiki]]
- [[MUA]] の[[本文]]表示
- [[ニュースリーダー]]の[[本文]]表示
- [[フィードリーダー]]の[[本文]]表示
- [[HTML]] の [[authoring tool]]
- [[MUA]] の本文編集
- [[IM]] の受信メッセージ
- [[IRC]] [[クライアント]]
- [[SNS]] の記事本文
- [[Webブラウザー]]
-- [CODE[<meta name=format-detection>]]
-- [[smart tag]]
]FIG]
* テストデータ
[REFS[
- [46] [CITE@en[tests-web/url/autolink at master · wakaba/tests-web]], [TIME[2020-02-17 10:54:26 +09:00]] <https://github.com/wakaba/tests-web/tree/master/url/autolink>
]REFS]
[47] 自動リンクテストデータ。
[[HTCT]] 形式のテストセット中に、
入力例とその[[URL自動リンク]]検出例、
[[HTML]] 変換例が記述されています。
* その他実装例
[REFS[
- [41] [CITE@en[perl-web-url/Parser.pod at master · manakai/perl-web-url]]
([TIME[2019-11-02 18:54:28 +09:00]])
<https://github.com/manakai/perl-web-url/blob/master/lib/Web/URL/Parser.pod>
- [44] [CITE@en[Web::URL::Parser]]
([TIME[2020-01-13 04:25:30 +09:00]])
<https://manakai.github.io/pod/Web/URL/Parser#member-split_by_urls>
]REFS]
[45] [[Perl]] による実装。
* 関連
[49] [[リンク展開]]
* メモ
[FIG(quote)[
[FIGCAPTION[
[16] [CITE[OPMLファイルやHTML、テキストファイルからの一括登録機能の追加 - はてなアンテナ日記 - 機能変更、お知らせなど]]
([TIME[2017-05-02 08:41:21 +09:00]])
<https://hatena.g.hatena.ne.jp/hatenaantenna/20060905/1157428635>
]FIGCAPTION]
> はてなアンテナで、複数のページを一括で登録する機能を追加しました。OPMLファイルやHTML、またテキストファイルに対応しています。(テキストファイルからはURLと判別できる文字列を抽出します。)
]FIG]
[50] [CITE[Tcl Improvement Proposals: TIP 3: TIP Format]], [TIME[2020-11-17T01:10:32.000Z]] <https://core.tcl-lang.org/tips/doc/trunk/tip/3.md>
[52] [CITE@en[RFC 1842 - ASCII Printable Characters-Based Chinese Character Encoding for Internet Messages]], [TIME[2021-01-31T11:17:23.000Z]], [TIME[2021-03-20T10:01:29.688Z]] <https://tools.ietf.org/html/rfc1842#section-10>
原文
>
[PRE[
at Beijing, China: ftp://info.bta.net.cn:/pub/software/;
at Shanghai, China: ftp://info.bta.net.cn:/pub/software/;
at Taiwan: ftp://nctuccca.edu.tw/pub/Chinese/ifcss/;
or ftp://ftp.edu.tw:/Chinese/ifcss/software/;
At Singapore: ftp://ftp.technet.sg:/pub/chinese/;
at California, U.S.A.: ftp://cnd.org/pub/software/.
]PRE]
これが[[自動リンク]]された結果の解釈:
>
[PRE[
at Beijing, China: <ftp://info.bta.net>.cn:/pub/software/;
at Shanghai, China: <ftp://info.bta.net>.cn:/pub/software/;
at Taiwan: <ftp://nctuccca.edu>.tw/pub/Chinese/ifcss/;
or <ftp://ftp.edu>.tw:/Chinese/ifcss/software/;
At Singapore: <ftp://ftp.technet>.sg:/pub/chinese/;
at California, U.S.A.: <ftp://cnd.org/pub/software/>.
]PRE]
なぜこんな切り方になるのか理解し難い。規則性が見えそうで見えない。
[54]
[CITE@ja[Linkification of URLs - 24122-url-linkification.pdf]], [TIME[2024-04-19T17:17:04.000Z]], [TIME[2024-04-25T04:12:14.741Z]] <https://www.unicode.org/L2/L2024/24122-url-linkification.pdf>
[55]
[CITE@en-US[UASG 010 Quick Guide to Linkification EN - Universal Acceptance Steering Group (UASG)]], [TIME[2024-04-24T23:51:14.000Z]], [TIME[2024-04-25T04:12:59.902Z]] <https://uasg.tech/download/uasg-010-quick-guide-to-linkification-en/>
[56]
>>55 例文自体の[[自動リンク化]]が推奨と無関係の滅茶苦茶な状態のままで草。てきとーに編集してるんかいw