http://exämple.se/path
またはの行に沿ってIDNURLを取得しようとしているhttps://äxämple.se/anotherpath?foo=bar&baf=bas
ので、次のようにそのコンポーネントを取得します。
[0] http(s)://
[1] äxämple.se
[2] /anotherpath?foo=bar&baf=bas
私が最初に思ったのは「使うだけparse_url
!」でした。そうですね、IDNドメインを実行しないことを除けば、運がありません。
次に、私は自分の正規表現のトリックをたくさん試しましたが、どういうわけか有用な出力を得ることができませんでした(それらのいくつかはある程度は機能していますが、それでも痛々しいほど欠けています。
最後に、他のさまざまな人々の正規表現パターンを試しましたが、どれも私にとって正しく機能していないようでした(正しく機能する=有用なものをキャプチャし、URL全体を「プロトコル」部分としてキャプチャし、他のほとんどの人は何もキャプチャしないか、明らかに機能していました私が試したものと同じです)。
そしてもちろん、なぜ私はこれをしているのですか?idn_to_ascii
URLをつなぎ合わせてデータベースに保存する前に、ドメイン名で実行したいと思います。
だから、私はここで何が間違っているのですか?私のアプローチは完全に間違っていますpreg_match
か、それとも私の問題を解決する魔法の呼び出しがありますか?
ParseIDNUrl
編集:できれば、他の誰かが書いたコードのブロブをダウンロードすることを含まないソリューションが欲しいです(たとえば、 100kBで計量するような名前のカスタムクラス)