0

私が熟考してきたここでの奇妙な問題。HTMLを含む文字列があり、ハイパーリンクが含まれている可能性があります。以下のテキストを検討してください。

Hello this is my EXAMPLE string of html here's a <tag> and here's another </tag>. Blah blah I'm going to hyperlink some stuff with <a href="http://www.example.com/> anchor text </a> and then finish my sentence.

上記のように、このフレーズanchor textはへのハイパーリンクのアンカーテキストですexample.com

anchorまたはのような部分文字列を検索して、example各オカレンスがハイパーリンクの一部であるかどうか、アンカーテキスト、URL、またはaタグであるかどうかを判断できるようにしたいと思います。

好ましくは、検索語の出現ごとにtrue/falseで返される配列があります。大文字と小文字を区別しない検索が適切であり、一致するオカレンスが返されると便利なので、大文字と小文字などがわかります。上記の例の理想的な応答は、次のようになります。

$array[0][0] = "EXAMPLE"
$array[0][1] = false
$array[1][0] = "example"
$array[1][1] = true

各オカレンスのインデックスも、返すのに役立つ情報になる可能性があります。ありがとう!

4

1 に答える 1

1

3つのケースすべてをチェックする必要があると思います。

  #<a[^>]*>[^<>]*YOURTEXT[^<>]*</a>#

最初のケースをカバーし、

  #<a[^>][^<>]*YOURTEXT[^<>]*>[^<>]*</a>#

2番目と3番目のケースをカバーします。

または、より寛容な正規表現で確認したほうがよいかもしれません。

  #<a[^<>]*>*[^<>]*YOURTEXT[^<>]*>*[^<>]*</a>#

次に、見つかったテキストが実際に有効なAタグであるかどうかをHTMLパーサーで確認します。最初のテストでは、テキストがキャプチャされたスニペットに含まれていることを確認し、2番目のテストではスニペットが実際にハイパーリンクであることを確認します。

于 2012-08-20T17:17:05.923 に答える