Почему регулярное выражение в CakePHP (обязательно CakePHP) - PullRequest
0 голосов
/ 02 августа 2010

Почему этот код работает в 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
)

1 Ответ

2 голосов
/ 02 августа 2010

В 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);    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...