-3

重複の可能性:
PHPでHTMLを解析および処理する方法は?

正規表現で-tagg内の単語を取得する方法を理解しようとしています。私のコンテンツはこれです:

<li id="menu-item-90" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-90"><a href="http://example.com/">Start</a></li>
<li id="menu-item-484" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item menu-item-484"><a href="http://example.com/test/">Test</a></li>
<li id="menu-item-375" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-375"><a href="http://example.com/test2/">test number two</a></li>
<li id="menu-item-171" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-171"><a href="http://example.com/test3/">Test 3</a></li>

したがって、上記のコードは、以下から取得したいだけです。

  • 始める
  • テスト
  • テスト番号2
  • テスト3

preg_splitとフォーマットされたリンクの正規表現を使用してこれを実現するにはどうすればよいですか?私は以下を試しましたが、私の正規表現スキルはナンバーワンではありません。空の配列を出力するだけです。

$tag = 'a';
$topMenuValues = preg_split('{<'.$tag.'[^>]*>(.*?)</'.$tag.'>}', $topMenuValues);
4

1 に答える 1

-1

タグ全体に沿って分割しています。<a..>...</a>つまり、タグ全体と一致します。問題は(.*?)中央にあり、区切り文字の正規表現と一致している必要があります。代わりに試してください

'{(<'.$tag.'[^>]*>)|(</'.$tag.'>)}'

そうは言っても、これは上記のhtmlの特定のインスタンスに対してのみ機能します。あなたは本当にhtmlパーサーを使うべきです

PHP用の堅牢で成熟したHTMLパーサー

于 2012-07-24T13:15:40.980 に答える