2010-08-02 76 views
0

为什么此代码在CakePHP与普通PHP文件中运行方式不同?为什么CakePHP中的正则表达式(必须CakePHP)

<?php 
$data = " One 


Two 

Three 



Four"; 
$data = trim($data); 
$data = preg_replace("/\n{2,}/", "\n", $data); 
$data = explode("\n",$data); 
var_dump($data); 
?> 

当我运行在一个正常的PHP文件的代码,我得到

array 
    0 => string 'One' (length=3) 
    1 => string 'Two' (length=3) 
    2 => string 'Three' (length=5) 
    3 => string 'Four' (length=4) 

,但如果我从一个蛋糕控制器运行它,我得到

Array 
(
    [0] => one 
    [1] => 
    [2] => 
    [3] => two 
    [4] => 
    [5] => three 
    [6] => 
    [7] => 
    [8] => 
    [9] => four 
) 
+5

究竟什么是问题?你是否收到错误?是否空白?你的厕所是否备份? – 2010-08-02 05:24:22

+0

你是否使用完全相同的文件? – Gumbo 2010-08-02 06:25:13

+0

不使用相同的文件 – meotimdihia 2010-08-02 06:30:13

回答

2

有没有什么蛋糕会干扰原生PHP函数的行为。如果您发布了您在Cake中使用的确切代码,包括操作方法定义,那么人们将能够更好地帮助您。我想如果你正在做这样的事情

public function myaction() 
{ 
    $data = " One 


    Two 

    Three 



    Four"; 
    $data = trim($data); 
    $data = preg_replace("/\n{2,}/", "\n", $data); 
    $data = explode("\n",$data); 
    var_dump($data); 
} 

这意味着\ n为从不重复一次以上(有成\ n后额外的空格。你在寻找更大的问题是你的正则表达式ISN”牛逼做你认为它应该当您运行在蛋糕中的代码。弄清楚这是为什么,你会解决你的问题。下面的正则表达式可能被证明更稳健

$data = preg_replace("/[\r\n]\s{0,}/", "\n", $data);  
+0

我只将该文件的粘贴代码复制到其他文件。但是2结果 – meotimdihia 2010-08-02 06:38:10

+0

@meotim在'Two'和'Three'之前,代码*是否在第一列*左对齐,或者是否缩进,即是否存在**选项卡**或**空格**? – deceze 2010-08-02 06:41:06

+0

你的代码是工作的 – meotimdihia 2010-08-02 06:41:44

相关问题