Как присоединиться к строкам пути файловой системы в PHP?

  • CRC-32 входит в ум главным образом, потому что дешево вычислить

  • , Любой вид ввода-вывода входит в ум главным образом, потому что это будет ограничивающим фактором для такого обязательства;)

  • проблема не вычисляет контрольные суммы, проблема состоит в том, чтобы заставить изображения в память вычислять контрольную сумму.

  • я предложил бы контроль "stagged":

    • этап 1: проверьте на изменения меток времени файла и если Вы обнаруживаете изменение, там передают...
      (не нужный в Вашем случае, как описано в отредактированной версии)

    • этап 2: получите изображение в память и вычислите контрольную сумму

  • , Наверняка важную также: многопоточность : установка конвейера, который позволяет обработать нескольких изображений параллельно, если несколько ядер процессора доступны.

69
задан kiamlaluno 8 September 2011 в 01:13
поделиться

4 ответа

Поскольку это, кажется, популярный вопрос, а комментарии заполняются «предложениями функций» или «отчетами об ошибках» ... Все, что делает этот фрагмент кода, - это объединение двух строк с косой чертой без дублируя косые черты между ними. Вот и все. Ни больше ни меньше. Он не оценивает фактические пути на жестком диске и не сохраняет начальную косую черту (добавьте ее, если необходимо, по крайней мере, вы можете быть уверены, что этот код всегда возвращает строку без начальной косой черты).

join('/', array(trim("abc/de/", '/'), trim("/fg/x.php", '/')));

Конечным результатом всегда будет путь без косых черт в начале и в конце и без двойных косых черт внутри. Не стесняйтесь делать из этого функцию.

EDIT: Вот хорошая гибкая оболочка функций для приведенного выше фрагмента. Вы можете передать сколько угодно фрагментов пути в виде массива или отдельных аргументов:

function joinPaths() {
    $args = func_get_args();
    $paths = array();
    foreach ($args as $arg) {
        $paths = array_merge($paths, (array)$arg);
    }

    $paths = array_map(create_function('$p', 'return trim($p, "/");'), $paths);
    $paths = array_filter($paths);
    return join('/', $paths);
}

echo joinPaths(array('my/path', 'is', '/an/array'));
//or
echo joinPaths('my/paths/', '/are/', 'a/r/g/u/m/e/n/t/s/');

: o)

49
ответ дан 24 November 2019 в 13:38
поделиться

для получения частей путей вы можете использовать pathinfo http://nz2.php.net/manual/en/function.pathinfo.php

для присоединения к ответу от @deceze выглядит нормально

2
ответ дан 24 November 2019 в 13:38
поделиться

Альтернативой является использование implode () и explode () .

$a = '/a/bc/def/';
$b = '/q/rs/tuv/path.xml';

$path = implode('/',array_filter(explode('/', $a . $b)));

echo $path;  // -> a/bc/def/q/rs/tuv/path.xml
4
ответ дан 24 November 2019 в 13:38
поделиться

Функция @ deceze не сохраняет начальный / при попытке присоединиться к пути, который начинается с абсолютного пути Unix, например joinPaths ('/ var / www', '/ vhosts /site');[1127098 sizes.[1271 impression

17
ответ дан 24 November 2019 в 13:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: