0

文字列が XML/HTML 形式か、CSV や JSON などの他の形式 (HTML をデータとして含む可能性がある) か、ランダムな < または > 文字を含む一般的なテキストかを検出しようとしています。完全な XML または HTML ドキュメントを検証しようとしているわけではありません。テストしている文字列は、XML/HTML の単なるスニペットである可能性もあれば、他の何かのスニペットである可能性もあります。したがって、私の基準は、文字列には適切な形式の XML タグが少なくとも 1 つ含まれている必要があり、そのタグは空白を除いて文字列の先頭から開始する必要があるということです。(この時点で、テキスト コンテンツをブラウザに送り返す前に、その MIME タイプを自動検出しようとしていることに気がついたかもしれません。ところで、私は PHP を使用しています。)

XML/HTML タグを検出する正規表現があります。

~<[a-z]+.*?(>.*?</[a-z]+>|/>)~i

そして、空白を無視して、タグが文字列を開始するかどうかを教えてくれる正規表現があります。

~^\s*<~

問題は、これらの両方を単一の正規表現に組み合わせる方法がわからないことです。この難しさは、特にサブジェクトにネストされたタグが含まれている場合に、正規表現の「貪欲」な側面に起因しているようです。ヘルプ?

4

1 に答える 1