为什么这段代码在CakePHP和普通的PHP文件中运行方式不同?
<?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)
但如果我从Cake控制器运行它,我会得到
Array
(
[0] => one
[1] =>
[2] =>
[3] => two
[4] =>
[5] => three
[6] =>
[7] =>
[8] =>
[9] => four
)
答案 0 :(得分:2)
Cake中没有任何内容会干扰本机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之后会有额外的空格。你看到的更大的问题是你的正则表达式在你运行Cake中的代码时没有做你认为应该做的事情找出原因,你将解决你的问题。以下正则表达式可能会更加健壮
$data = preg_replace("/[\r\n]\s{0,}/", "\n", $data);