Взрывающиеся строки в PHP - PullRequest
3 голосов
/ 18 октября 2011

У меня есть следующий бит кода 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 ]

8 голосов
/ 18 октября 2011

Используйте 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
3 голосов
/ 18 октября 2011

Нет 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>
0 голосов
/ 18 октября 2011

Для этого вы можете использовать preg_split Документы , в отличие от explode позволяет просто посмотреть, где разделить.И он также поддерживает ограничение:

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

Демо

0 голосов
/ 18 октября 2011

используя ваш код, добавив это должно сделать работу

unset($strArray[0]);

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