WordPress ではコメント欄に URL が書き込まれると、自動的に <a> タグに変換してくれます。
これを実現しているのが、wp-includes\default-filters.php に記述してあるフィルターフック add_filter( 'comment_text', 'make_clickable', 9 );
と、wp-includes\formatting.php に記述してある make_clickable() 関数。
しかし、この make_clickable() 関数内で使用している正規表現が適切では無いため、全角文字も URL として処理されてしまいます。
これにより URL の後ろにスペースが入らず、そのままコメントが続いてしまうと、嫌な感じに整形されてしまいます。
URLに使える文字列を規定している RFC2396 によると、URLとして使える文字は reserved | unreserved | escaped の3種類です。
大雑把にまとめると
- reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | ","
- unreserved = alphanum (英数字) | mark ( "-" | "_" | "." | "!" | "~" | "*" | "'" | "(" | ")" )
- escaped = "%" hex hex
※日本語などの unreserved 以外の文字は16進数のコードに変換後、頭に % をつけてエスケープする。
続きを読む →