PHP中的字符串分解

PHP中的字符串分解,php,html,arrays,string,explode,Php,Html,Arrays,String,Explode,我有以下几段PHP代码 最后,我想把迈克尔26岁的数据存储在$str1变量中,他喜欢绿色汽车。和白色足球以及红色棒棒糖和黄色太阳$str2变量中 因此,基本上第一段中的所有内容都在$str1中,之后的所有内容都在$str2中 <?php $str = "<p>Michael is 26</p><p>He likes green cars.</p><p>And white footballs</p><p&g

我有以下几段PHP代码

最后,我想把迈克尔26岁的数据存储在$str1变量中,
他喜欢绿色汽车。

和白色足球以及红色棒棒糖和黄色太阳$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) ?
?>

我如何做到这一点


非常感谢您的指点。

使用带分隔符的
分解:

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

”,$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>' 
)
数组(
迈克尔是26岁,
他喜欢绿色的汽车、白色的足球、红色的棒棒糖和黄色的太阳
)
那么你所要做的就是:

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

”,$str,2); $str1=$strArray[0]。'

",; $str2=$strArray[1]; echo$str1.$str2//将再次输出原始字符串
此处不需要
分解()。简单的字符串操作(
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>
$str=“迈克尔26岁

他喜欢绿色汽车。

和白色足球

和红色棒棒糖

和黄色太阳

”; $str1=substr($str,0,strpos($str,“

”)+strlen(“

”); $str2=substr($str,strpos($str,“

”)+strlen(“

”); echo$str1; //迈克尔26岁了

echo$str2; //他喜欢绿色的汽车、白色的足球、红色的棒棒糖和黄色的太阳


使用您的代码,将其追加应该可以完成这项工作

unset($strArray[0]);

$str2 = implode('</p>', $strArray);
unset($strArray[0]);
$str2=内爆(“

”,$strArray);
您可以使用它,而不像
explode
它只允许查看拆分的位置。它还支持一个限制:

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

list($str1,$str2)=preg_split(“~(
substr()
strpos()
可能会慢一些,如果使用
explode()
他可以更容易地达到相同的结果,为什么要使用它呢?”)小的修改是删除神奇的数字4,并用strlen(

)替换它.很好的解决方案!!!我更喜欢这个,它做了它想要做的,并且没有爆炸、内爆等…代码很清楚