2016-08-01 19 views
1

私はWordpressで作業しています。すべての段落を順序付きリストに変換しようとしていますが、ほぼ完全に動作しています。 私のコード:これは固定することができますどのように段落を無秩序リストにする

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

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

唯一の問題は、それはこのように、各リストの先頭に空のリスト項目を作成すること、ありますか?それを修正する他の解決策はありますか?前もって感謝します! PS:順序付きリストとしても機能するはずです。

答えて

1

あなたのワードプレスに空の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タグのコンテンツをキャッチする条件をより複雑にすることをお勧めします。

3

可能な解決策は、p>のすべての出現をli>に置き換えることです。

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

explode('<p>', '<p>a</p><p>b</p><p>c</p>')の結果は次の配列になります。

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

最初の<p>タグの左側には何もないので、最初の要素は空です。他の人が示唆しているように、最初の要素を無視するなどの回避策がありますが、残った</p>タグを処理する必要があります。これはHTMLを混乱させます。

0

あなたが提供する内容に基づいて、これを修正するために使用できる「ハッキー」なソリューションがいくつかありますが、提供されているものに基づいて明確な解決策を提示することは非常に難しいです。タグは

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

echo '</ul>'; 
空かどうかをチェックすることができ

$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>'; 

または

:これが唯一の最初の項目にすべての時間を起きている場合は、単にそのようなループの最初の反復をスキップすることができ

運が良かったです。

関連する問題