在PHP中拆分字符串时遇到麻烦

时间:2013-06-13 10:50:36

标签: php

我有以下代码。

$var1 = 'This is line1

         This is line2

         This is line3';

$var_arr = explode("\n", $var1); // or preg_split("/\n/", $var1); same
echo '<ul type = "disc" class="deal_data" >';
foreach($var_arr as $var1)
{                             
   echo '<li><p>'.$var1.'</p></li>';                                 
} 
echo '</ul>';
echo 'String Length:'.strlen($var_arr[1]);

它的输出是:

Output

第二个和第四个列表项的长度是否与零不同?

6 个答案:

答案 0 :(得分:1)

我可以看到$var1

中有两个新行

试试这个

explode("\n\n", $var1);

<强> phpFiddle Demo

答案 1 :(得分:1)

添加爆炸分隔符\r

<?php
    $var1 = 'This is line1

             This is line2

             This is line3';

    $var_arr = explode("\n\r", $var1); // or preg_split("/\n/", $var1); same
    echo '<ul type = "disc" class="deal_data" >';
    foreach($var_arr as $var1)
    {
        echo '<li><p>'.$var1.'</p></li>';
    }
    echo '</ul>';
    echo 'String Length:'.strlen($var_arr[1]);
?>

结果是:

<ul type = "disc" class="deal_data" >
    <li>
        <p>This is line1</p>
    </li>
    <li>
        <p>This is line2</p>
    </li>
    <li>
        <p>This is line3</p>
    </li>
</ul>
String Length:24

答案 2 :(得分:1)

这是因为你的输入有五行,其中两行是空的:

$var1 = 'This is line1 /* Line 1 */
                       /* Line 2 */
         This is line2 /* Line 3 */
                       /* Line 4 */
         This is line3 /* Line 5 */';

答案 3 :(得分:0)

您的文字行由两个换行符分隔。你在一个换行符上爆炸,所以你得到空白行的数组条目以及带有文本的行。

尝试

 $var_arr = explode("\n\n", $var1); 

答案 4 :(得分:0)

命令的条件可以帮助你......

$var1 = 'This is line1

         This is line2

         This is line3';

$var_arr = explode("\n", $var1); // or preg_split("/\n/", $var1); same
echo '<ul type = "disc" class="deal_data" >';
foreach($var_arr as $var1)
{                             
   if($var1!="")
       echo '<li><p>'.$var1.'</p></li>';                                 
} 
echo '</ul>';
echo 'String Length:'.strlen($var_arr[1]);

答案 5 :(得分:0)

过滤并修剪你的数组:

$var1 = 'This is line1

         This is line2

         This is line3';

$var_arr = explode("\n", $var1);
$var_arr = array_filter(array_map("trim",$var_arr));

var_dump(array_values($var_arr));

输出

array (size=3)
  0 => string 'This is line1' (length=13)
  1 => string 'This is line2' (length=13)
  2 => string 'This is line3' (length=13)
相关问题