我有以下代码:
$data = "Normal text
    code
    code
    code
Normal text";
$data = nl2br($data);
$data= explode('<br />', $data );
foreach($data as $value){
if(preg_match('/^    /',$value)){
echo 'code';
echo '<br />';
}else{
echo 'Not code';
echo '<br />';
}
}
我想检查每条线是否以4个空格开头,如果是,我想要回显为“Code”,如果不是,我想回复为“Not code”。但我得到的输出为“非代码”,尽管第2行,第3行和第4行以4个空格开头。我无法弄清楚我做错了什么。请帮帮我。
答案 0 :(得分:2)
nl2br
除非您告知,否则不生成<br />
。您的explode
逻辑错误。
相反,试试这个:
$data = "Normal text.......";
foreach(explode("\n",$data) as $line) {
// your existing foreach content code here
}
答案 1 :(得分:1)
让它运转起来 添加了trim()来摆脱字符串前面的换行符
nl2br将\n
替换为<br />\n
(或<br />\r\n
),
因此,当分割到<br />
时,\n
将作为第一个字符
<?php
$data = "Normal text
    code
    code
    code
Normal text";
$data = nl2br($data);
$data= explode('<br />', $data );
foreach($data as $value)
{
if(preg_match('/^    /', trim($value)))
{
echo 'code';
}
else
{
echo 'Not code';
}
echo '<br />';
}
?>
答案 2 :(得分:0)