PHP:preg_match无效

时间:2013-07-30 15:29:17

标签: php regex

我有以下代码:

$data = "Normal text
&nbsp&nbsp&nbsp&nbspcode
&nbsp&nbsp&nbsp&nbspcode
&nbsp&nbsp&nbsp&nbspcode
Normal text";
$data = nl2br($data);
$data= explode('<br />', $data );
foreach($data as $value){
if(preg_match('/^&nbsp&nbsp&nbsp&nbsp/',$value)){
echo 'code';
echo '<br />';
}else{
echo 'Not code';
echo '<br />';
}
}

我想检查每条线是否以4个空格开头,如果是,我想要回显为“Code”,如果不是,我想回复为“Not code”。但我得到的输出为“非代码”,尽管第2行,第3行和第4行以4个空格开头。我无法弄清楚我做错了什么。请帮帮我。

3 个答案:

答案 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
&nbsp&nbsp&nbsp&nbspcode
&nbsp&nbsp&nbsp&nbspcode
&nbsp&nbsp&nbsp&nbspcode
Normal text";

        $data = nl2br($data);

        $data= explode('<br />', $data );

        foreach($data as $value)
        {
                if(preg_match('/^&nbsp&nbsp&nbsp&nbsp/', trim($value)))
                {
                        echo 'code';
                }
                else
                {
                        echo 'Not code';
                }
                echo '<br />';
        }
?>

答案 2 :(得分:0)

您也可以使用此处定义的“startsWith”...

https://stackoverflow.com/a/834355/2180189

...而不是正则表达式匹配。也就是说,如果空格总是在开头

相关问题