PHP で文字列を分割/展開したいと思います。文字列は次のようになります。
<strong>Label</strong><p>Value</p>
この結果:
array(
'<strong>Label</strong>',
'<p>Value</p>'
)
これどうやってするの?
次のように実行できます。
$string = "<strong>Label</strong><p>Value</p>";
$pos = strpos($string,'<p>');
$array = array();
$array[] = substr($string, 0,$pos);
$array[] = substr($string,$pos);
または preg_match を使用:
preg_match('%(.*g>)(.*)%',$string,$array);
//$array[1] = '<strong>Label</strong>'
//$array[2] = '<p>Value</p>'
preg
これは常に関数よりも高速ではありませんか?
<?php
$str = "<strong>Label</strong><p>Value</p>";
$str = explode( "g><p", $str );
$str = implode( "g>~<p", $str);
$str = explode( "~", $str );
また、タグがネストされる可能性があり、ロジックが難しくなることに注意してください。
次のようなハックなことをしなければ、explode でそれを達成することはできません。
$str = "<strong>Label</strong><p>Value</p>";
$strExp = explode("<p>", $str);
$strExp[1] = "<p>" . $strExp[1];
代わりに正規表現を使用することをお勧めします。
それは分割の仕組みではありません。PREG_SPLIT_DELIM_CAPTURE フラグを指定して preg_split を使用する必要があります。
これでうまくいくはずです。
$string = "<strong>Label</strong><p>Value</p>";
$array = explode("\t", str_replace("><", ">\t<", $string));