3

おそらく簡単ですが、正しい正規表現を生成できないようです。

私はこの文字列を持っていると言います

$string = '<h2>Header 1</h2><p>ahs da sdka dshk asd haks</p><img src="http://dummyimage.com/100x100/" width="100" height="100" alt="Alt" /><h2>Header 2</h2><p>asdkhas daksdha kd ahs</p><em>Lame</em><p>trhkbasd akhsd ka dkhas</p><h2>Header 3</h2><p>ajdas ahkds hakd</p>';

そして、私はこのようにそれが必要です

$array[0] = '<h2>Header 1</h2><p>ahs da sdka dshk asd haks</p><img src="http://dummyimage.com/100x100/" width="100" height="100" alt="Alt" />';
$array[1] = '<h2>Header 2</h2><p>asdkhas daksdha kd ahs</p><em>Lame</em><p>trhkbasd akhsd ka dkhas</p>';
$array[2] = '<h2>Header 3</h2><p>ajdas ahkds hakd</p>';

...文字列にこれらのH2ブロックがさらに含まれている場合など。

したがって、分割点はH2にあり、HTMLタグを保持する必要があります。ポインタはありますか?

4

3 に答える 3

4

preg_split()開始タグを前向きに使用します。

print_r(preg_split('/(?=<h2>)/', $string, -1, PREG_SPLIT_NO_EMPTY));

ポジティブルックアヘッドは、正規表現パーサーに<h2>、タグを削除するのではなく、周囲のテキストを分割するように指示するだけです。で分割すると、。/<h2>/で分割した場合と同じように、タグが消えますexplode()

于 2010-09-24T11:30:45.883 に答える
1
$result = split('(?=<h2>)', $string);

また

$result = preg_split('/(?=<h2>)/', $string);
于 2010-09-24T11:26:03.130 に答える
0
$string = '<h2>Header 1</h2><p>ahs da sdka dshk asd haks</p><img src="http://dummyimage.com/100x100/" width="100" height="100" alt="Alt" /><h2>Header 2</h2><p>asdkhas daksdha kd ahs</p><em>Lame</em><p>trhkbasd akhsd ka dkhas</p><h2>Header 3</h2><p>ajdas ahkds hakd</p>';

$matches    = split('<h2>', $string);

print_r($matches);

ただし、これはPHP5.3.0で非推奨になりました。

于 2010-09-24T11:28:57.713 に答える