Проверьте, заканчивается ли содержимое файла на перевод строки без символов - PullRequest
0 голосов
/ 18 октября 2019

У меня есть этот скрипт:

$dl    = array('st' => false, 'smg' => '');
$fileR = file($PhatToFile);
$fileR = array_reverse($fileR);
$c     = count($fileR) + 1;
        foreach ($fileR as $line) {
            if (!strlen(rtrim($line)))  {
                $dl['smg'] .= 'Incorrect space found file: <b> ' . $file . '</b> Line: <b>' . $c . '</b><br>';
                $dl['st'] = true;
                $c = $c - 1;
            } else {
                break;
            }
        }
if($dl['st'] == true){
    echo $dl['smg'];
}

Я использую его, чтобы определить, заканчивается ли файл Пробелом o Прерывание строки, но не работает с этим:

<?php

    echo "hello world";

?> (Line break)
(no find this... line 5 have line break and file end in 6)

Проверьте, что я перечислилкаждая строка.

Ответы [ 2 ]

0 голосов
/ 18 октября 2019

Я решаю это с помощью, способен обнаружить:

пробел или разрыв строки в начале файла.

пробел или разрыв строки в конце файла.

$dl    = array('st' => false, 'smg' => '');
$smg1  = $smg3  = '';
$smg2  = [];
$fileR = file($file);
$c     = 1;
foreach ($fileR as $line) {
    if (!strlen(trim($line))) {
        $smg1 .= 'Incorrect space/Linebreak found file: <b> ' . $file . '</b> Line: <b>' . $c . '</b><br>';
        $dl['st'] = true;
        $c++;
    } else {
        break;
    }
}
$fileR = array_reverse($fileR);
$rc    = count($fileR);
foreach ($fileR as $line) {
    if (!strlen(trim($line))) {
        $smg2[]   = 'Incorrect space/Linebreak found file: <b> ' . $file . '</b> Line: <b>' . $rc . '</b><br>';
        $dl['st'] = true;
        $rc--;
    } else {
        break;
    }
}
$fileR = array_reverse($fileR);
if ((substr($fileR[$rc - 1], -1) == "\n") AND strlen(trim($fileR[$rc - 1])) > 0) {
    $smg3 .= 'Incorrect Linebreak found file: <b> ' . $file . '</b> Line: <b>' . $rc . '</b><br>';
    $dl['st'] = true;
}
$smg2      = array_reverse($smg2);
echo $dl['smg'] = $smg1 . $smg3 . implode('', $smg2);
0 голосов
/ 18 октября 2019

, пожалуйста, попробуйте это, я заменил ваше заявление if.

foreach ($fileR as $line) {
    if (!trim(preg_replace('/\s+/', '', $line))) {
        $dl['smg'] .= 'Incorrect space found file: <b> ' . $file . '</b> Line: <b>' . $c . '</b><br>';
        $dl['st'] = true;
        $c = $c - 1;
    } else {
        break;
    }
}
...