PHP拆分/爆炸字符串

时间:2013-03-07 20:30:45

标签: php regex split explode

我想在PHP中拆分/爆炸一个字符串。字符串如下所示:

<strong>Label</strong><p>Value</p>

结果如下:

array(
    '<strong>Label</strong>',
    '<p>Value</p>'
)

我该怎么做?

6 个答案:

答案 0 :(得分:2)

你可以这样做:

$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>'

答案 1 :(得分:1)

这总是比preg函数更快吗?

<?php
$str = "<strong>Label</strong><p>Value</p>";
$str = explode( "g><p", $str );
$str = implode( "g>~<p", $str);
$str = explode( "~", $str );

并警告:标签可以嵌套,逻辑变得困难。

答案 2 :(得分:0)

你不可能在爆炸的情况下实现这一目标,而不会做一些像哈克一样的事情:

$str = "<strong>Label</strong><p>Value</p>";
$strExp = explode("<p>", $str);
$strExp[1] = "<p>" . $strExp[1];

我建议改用正则表达式。

答案 3 :(得分:0)

这不是拆分的工作方式。您需要将preg_split与PREG_SPLIT_DELIM_CAPTURE标志一起使用。

答案 4 :(得分:0)

这应该可以解决问题;

$string = "<strong>Label</strong><p>Value</p>";
$array = explode("\t", str_replace("><", ">\t<", $string));

答案 5 :(得分:-1)

preg_match('~(<strong>[^<]*</strong>)(<p>[^<]*</p>)~', $source, $matches);