【问题标题】:Exploding strings in PHPPHP中的爆炸字符串
【发布时间】:2011-12-10 05:46:24
【问题描述】:

我有以下 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) ?
?>

我如何做到这一点?

非常感谢您的任何指点。

【问题讨论】:

    标签: php html arrays string explode


    【解决方案1】:

    使用带有分隔符的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
    

    【讨论】:

      【解决方案2】:

      这里不需要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>
      

      【讨论】:

      • substr()strpos() 可能会更慢,如果使用explode() 他可以更轻松地获得相同的结果,他为什么要使用它? :)
      • 小修改就是去掉幻数4,换成strlen("")。
      • 不错的解决方案!!!我更喜欢这个,它做它打算做的事情,而不是爆炸,内爆等......代码很清楚
      【解决方案3】:

      使用你的代码,附加这个应该可以完成这项工作

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

      【讨论】:

        【解决方案4】:

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

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

        Demo

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-03-22
          • 2020-12-10
          相关资源
          最近更新 更多