галерея — Как удалить начало имени файла в PHP?

Я делаю галерею в jssor, а слайды создаются путем чтения каталога и написания div для каждого изображения с использованием сценария PHP. Под изображением отображается заголовок с именем исполнителя (это всегда одно и то же), за которым следует имя файла без расширения.

Это то, что я до сих пор:

<?

$dir = 'Photo/Paintings';
$files = scandir($dir);
sort($files);
foreach ($files as $file) {
if ($file != '.' && $file != '..') {
echo '<div>
<img u="image" style="max-height:460px;" src="Photo/Paintings/'.$file.'" />
<img u="thumb" src="Photo/Paintings/'.$file.'" />';
$withoutExt = preg_replace('/\\.[^.\\s]{3,4}$/', '', $file);
echo '<div u="caption" style="position: absolute; top: 470px; left: 0px; height: 10px; text-align: center;">
ARTISTX - '.$withoutExt.'
</div>
</div>';
}
}

?>

Эти изображения должны быть в определенном порядке, поэтому моя идея заключалась в добавлении числа в начале каждого имени файла, например, так #5-Picture of tree.jpg, Мой вопрос, как мне удалить это #5 часть от отображения в подписи, а?

Кроме того, есть ли лучший способ определить порядок этих файлов? Теперь я понимаю, что моя идея не сработает даже очень хорошо, поскольку № 1 в алфавитном порядке будет сопровождаться № 11 и № 12 вместо № 2. Я мог бы обойти это, используя комбинацию с буквами 1А, 1В, 1С, 2А и т. Д.

0

Решение

Это вступает в силу, только если имя файла начинается с цифры:

$str = preg_replace('/^\\d+-/', null, $fileName);

Файлы, которые не начинаются с #{number}- не будет зависеть от этого процесса пошива.

Для вашей проблемы сортировки. Положить начинку 0 до. Так что используйте 01, 02… и так далее до 99,

Кстати. Не используйте короткие теги PHP. Всегда используйте <?php в начале блока PHP.

0

Другие решения

Вы можете получить только часть строки:

$str = substr($str, 3);

Или вы удалите часть до - явный:

$ex = explode("-", $str);
unset($ex[0]);
$str = implode("-", $ex);

Второй способ лучше, если первая часть может иметь более 3 символов.

Кроме того, есть ли лучший способ определить порядок этих файлов? Теперь я понимаю, что моя идея не сработает даже очень хорошо, поскольку № 1 в алфавитном порядке будет сопровождаться № 11 и № 12 вместо № 2. Я мог бы обойти это, используя комбинацию с буквами 1А, 1В, 1С, 2А и т. Д.

Использовать этот:

$myFiles = Array();
foreach($files as $file){
// ...
$myFiles[str_replace("#", "", explode("-", $file)[0]))] = $file;
}
ksort($myFiles);

foreach($myFiles as $file){
// display
}
0

Чтобы ответить на ваш второй вопрос, вам не нужно переходить на 1A, 2B … есть что-то вроде natsort natsort

0
По вопросам рекламы [email protected]