【问题标题】:Turn Paragraphs into Unordered List将段落变成无序列表
【发布时间】:2016-12-06 18:45:42
【问题描述】:

我正在使用 Wordpress,我正在尝试将所有段落转换为有序列表,并且几乎可以完美运行。 我的代码:

$list_items1 = explode("<p>", $bulletlist);
    echo '<ul>';
        foreach($list_items1 as $list_item)
        echo '<li>' . $list_item . '</li>';
    echo '</ul>';

唯一的问题是,它会在每个列表的开头创建一个空列表项,如下所示:

<ul>
    <li></li>
    <li>List item 1</li>
    <li>List item 2</li>
    <li>List item 3</li>
</ul>

如何解决这个问题?有没有其他解决方案来解决这个问题?提前致谢! PS:它也应该作为一个有序列表。

【问题讨论】:

    标签: php list explode


    【解决方案1】:

    一种可能的解决方案是将所有出现的p&gt; 替换为li&gt;

    $list_items = str_replace('p>', 'li>', $bulletlist);
    echo '<ul>' . $list_items . '</ul>';
    

    您的方法的问题是explode('&lt;p&gt;', '&lt;p&gt;a&lt;/p&gt;&lt;p&gt;b&lt;/p&gt;&lt;p&gt;c&lt;/p&gt;') 导致以下数组。

    array(4) {
      [0]=> string(0) ""
      [1]=> string(5) "a</p>"
      [2]=> string(5) "b</p>"
      [3]=> string(5) "c</p>"
    }
    

    第一个元素是空的,因为第一个 &lt;p&gt; 标记的左侧没有任何内容。正如其他人所建议的那样,有一些解决方法,比如忽略第一个元素,但你仍然需要处理剩余的 &lt;/p&gt; 标签,这会弄乱你的 HTML。

    【讨论】:

      【解决方案2】:

      因此,根据您提供的内容,您可以使用一些“hacky”解决方案来解决此问题,但很难根据所提供的内容给出明确的解决方案。如果这一直只发生在第一项上,您可以像这样跳过循环的第一次迭代:

      $isFirstIteration = true;
      $list_items1 = explode("<p>", $bulletlist);
      echo '<ul>';
          foreach($list_items1 as $list_item)
          if(!$isFirstIteration){
              echo '<li>' . $list_item . '</li>';
          }else{
              $isFirstIteration = false;
              continue;
          }
      
      echo '</ul>';
      

      你可以检查标签是否为空

      $list_items1 = explode("<p>", $bulletlist);
      echo '<ul>';
          foreach($list_items1 as $list_item)
          if(!empty($list_items1)){
              echo '<li>' . $list_item . '</li>';
          }
      
      echo '</ul>';
      

      祝你好运。

      【讨论】:

        【解决方案3】:

        您的 wordpress 中似乎可能有空的 p 标签。我会添加一个条件来捕获空的 p 标签。

        $list_items1 = explode("<p>", $bulletlist);
        echo '<ul>';
        foreach($list_items1 as $list_item) {
            if ($list_item != '') {
                echo '<li>' . $list_item . '</li>';
            }
        }
        echo '</ul>';
        

        您可能希望使条件更复杂以捕获空格、制表符或其他您不希望包含的 p 标签内容。

        【讨论】:

          猜你喜欢
          • 2021-02-08
          • 1970-01-01
          • 2017-11-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多