Взрывающиеся строки в PHP
У меня есть следующий фрагмент 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 answers
Используйте 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
Здесь нет необходимости 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>
Используя ваш код, добавление этого должно выполнить задачу
unset($strArray[0]);
$str2 = implode('</p>', $strArray);
Вы можете использовать preg_split
Документы для этого, в отличие от explode
, он позволяет просто посмотреть, где нужно разделиться. И он также поддерживает ограничение:
list($str1, $str2) = preg_split('~(?<=</p>)~', $str, 2);