を利用する場合は、 でPREG_SPLIT_DELIM_CAPTURE
使用される正規表現パターン内でキャプチャを提供する必要がありますpreg_split
。
あなたの現在のパターンでは:
/<img/
キャプチャするものがあります。そのため、削除されていることがわかります ( Demo ):
Array
(
[0] => <p>First sentence here comes. Second sentence here it is. One more sentence. </p>
[1] => alt="amj" src="https://domain.com/images7.jpg" />
[2] => alt="Ea" src="http://domain.com/images3.jpg" />
[3] => alt="amj" src="https://domain.com/images7.jpg" />
[4] => alt="amj" src="https://domain.com/images7.jpg" />
)
ただし、そこからキャプチャを作成すると、次のようにキャプチャされます。
/(<img)/
結果 (デモ):
Array
(
[0] => <p>First sentence here comes. Second sentence here it is. One more sentence. </p>
[1] => <img
[2] => alt="amj" src="https://domain.com/images7.jpg" />
[3] => <img
[4] => alt="Ea" src="http://domain.com/images3.jpg" />
[5] => <img
[6] => alt="amj" src="https://domain.com/images7.jpg" />
[7] => <img
[8] => alt="amj" src="https://domain.com/images7.jpg" />
)
ご覧のとおり、preg_split
それは文書化されたジョブであり、最初のキャプチャー supgroup の各キャプチャーごとに別の分割を追加します (最初のもののみが取得されます)。次に、たとえば、他の html-like-string-regex のさまざまな質問で概説されている完全なタグ全体に拡張する必要がある場合があります (正規表現では通常どおり制限されるため、HTML の代わりに preg_* 関数を使用すると非難されます)。パターン自体ではなく、問題が発生した場合のパーサー:
/(<img [^>]*>)/
結果 (デモ):
Array
(
[0] => <p>First sentence here comes. Second sentence here it is. One more sentence. </p>
[1] => <img alt="amj" src="https://domain.com/images7.jpg" />
[2] =>
[3] => <img alt="Ea" src="http://domain.com/images3.jpg" />
[4] =>
[5] => <img alt="amj" src="https://domain.com/images7.jpg" />
[6] =>
[7] => <img alt="amj" src="https://domain.com/images7.jpg" />
[8] =>
)
標準の HTML パーサーを使用すると、コードをより安定させることができます。