ユーザが入力したテキスト内のURLをリンク化して表示するPHPライブラリを作り始めました
2023/08/23
ユーザが入力したテキスト内のURLをリンク化して表示するという要件があり、実装方法を検討していました。
これはテストです。
Webサイトは、 https://www.example.com/ です。
<script>alert('XSS');</script>
上のテキストがユーザ入力として渡されたら、下の様に変換する機能が要件です。
これはテストです。<br>
Webサイトは、 <a href="https://www.example.com/" target="_blank" rel="noopener">https://www.example.com/</a> です。<br>
<script>alert('XSS');</script>
このような要件は結構ありがちなので、packagistで検索したのですが、ずばり目的に合致したライブラリを探すことができませんでした。
上のライブラリが求めている目的に近かったのですが、linkify は、HTMLドキュメント内のURL等のテキストを a タグで装飾して出力するというものでした。上の例では、scriptタグ部分は、無視して出力されない仕様になっているようでした。
他の類似ライブラリも、HTMLドキュメントを入力としてタグベースで解析するものだったので、今回の自分の要件「テキストを受けとって、URLはリンクとしつつ他を適切にHTMLエンコードする」というライブラリを作ってみようと思いました。
ゆっくり進めて、packagistに上げるつもりです。