在PHP中爆炸字符串

时间:2011-10-18 15:53:17

标签: php html arrays string explode

我有以下一些PHP代码。

最后,我想将<p>Michael is 26</p>存储在 $ str1 变量中,将<p>He likes green cars.</p><p>And white footballs</p><p>And red lollies</p><p>And yellow suns</p>存储在 $ str2 变量中。

所以基本上第一段中的所有内容都在 $ str1 中,所有内容此后都在 $ str2 中。

<?php
    $str = "<p>Michael is 26</p><p>He likes green cars.</p><p>And white footballs</p><p>And red lollies</p><p>And yellow suns</p>";
    $strArray = explode('</p>', $str);
    $str1 = $strArray[0] . '</p> ';
    echo $str1;
    // variable to export remainder of string (minus the $str1 value) ?
?>

我如何实现这一目标?

非常感谢任何指示。

4 个答案:

答案 0 :(得分:8)

explode与分隔符一起使用:

 explode('</p>', $str, 2);

这将返回:

array (
   0 => '<p>Michael is 26',
   1 => '<p>He likes green cars.</p><p>And white footballs</p><p>And red lollies</p><p>And yellow suns</p>' 
)

那么你所要做的就是:

$strArray = explode('</p>', $str, 2);
$str1 = $strArray[0] . '</p> ';
$str2 = $strArray[1];
echo $str1.$str2; //will output the original string again

答案 1 :(得分:3)

此处不需要explode()。简单的字符串操作(strpos(), substr())就可以了:

$str = "<p>Michael is 26</p><p>He likes green cars.</p><p>And white footballs</p><p>And red lollies</p><p>And yellow suns</p>";
$str1 = substr($str, 0, strpos($str, "</p>") + strlen("</p>"));
$str2 = substr($str, strpos($str, "</p>") + strlen("</p>"));

echo $str1;
// <p>Michael is 26</p>
echo $str2;
// <p>He likes green cars.</p><p>And white footballs</p><p>And red lollies</p><p>And yellow suns</p>

答案 2 :(得分:0)

使用你的代码,附加这个应该做的工作

unset($strArray[0]);

$str2 = implode('</p>', $strArray);

答案 3 :(得分:0)

您可以使用preg_splitDocs,与explode不同,它只允许查看拆分位置。它也支持限制:

list($str1, $str2) = preg_split('~(?<=</p>)~', $str, 2);

Demo