[umka]

[umka]
Рейтинг
456
Регистрация
25.05.2008

У меня работает и вариант из поста №2 (сортирует по 5-му с конца символу), и особенно хорошо работает второй вариант из поста №4 (вообще отсутствуют какие-либо признаки сортировки).

Если у вас не работает, значит в вашем коде, скорее всего, после "хитрой" сортировки есть ещё какие-то действия с этим массивом. Попробуйте мой код сохранить в отдельный файл и вы убедитесь, что всё работает.

postavkin:
umka, не силен в этом. Но насколько я понимаю - fopen - открыть файл.
Файл открывать не надо :)
Есть массив $galereyafile, в нем
$galereyafile[0] - index.php
$galereyafile[1] - lamitat.php
$galereyafile[3] - edilgres.php
и т.д.
и мне надо отсортировать по символу перед точкой (он же пятый символ).

Значит я вас всё-таки правильно понял, и тогда код из поста №2 должен работать :)

dm-211:
не работает, перекидывает на 404

А index.htm точно есть в этой директории?

Посмотрите в error_log где он чего не может найти.

dm-211:
куда добавить, куда физически добавить?

Не добавить, а добавитЪ. Код этот добавитЪ "index.htm" ко всем урлам, заканчивающимся на "/" :)

А… я не совсем понял задачу. Мой скриптик сортирует массив по 5-му символу с конца строки :)

В вашем случае оптимальным будет сначала загнать все символы в массив, где они будут ключами к именам файлов, а потом этот массив отсортировать по ключам.

Примерно так

foreach ($galereyafile as $filename) {

$f=fopen($filename,'r');
fseek($f,-5,SEEK_END);
$k=fread($f,1);
fclose($f);
$galereyafile2[$k]=$filename;
}
ksort($galereyafile2);
print_r($galereyafile2);

Тут предполагается, что вы самостоятельно сделаете обработку ошибок, и что не будет двух файлов с одинаковым 5-м символом с конца :)

---------- Добавлено 13.02.2012 в 23:16 ----------

А вообще, если задача отсортировать массив каждый раз одинаково хаотично, то проще не мучить файловую систему, а работать таки с именами файлов.

Примерно так:


foreach ($galereyafile as $filename) {
$galereyafile2[md5($filename)]=$filename;
}
ksort($galereyafile2);
print_r($galereyafile2);

Вместо md5, конечно же, можно (и даже лучше) использовать какую-либо более простую функцию.

function cmp($a, $b) {
$a=substr($a,-5,1);
$b=substr($b,-5,1);
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
usort($galereyafile,"cmp");

RewriteEngine on

RewriteCond %{THE_REQUEST} /\ HTTP/

RewriteRule ^(.*)$ $1index.htm [R=301,L]

Добавит "index.html" ко всем урлам, заканчивающимся просто на /

LEOnidUKG:
а вы пробовали? я не знаю что у вас за хостинг.

Обычно ни где не разрешают время увеличивать.

Иначе будут устраивать безобразие :)

durov77:
3TB SAS 15K

Это что за зверьки, если не секрет? :)

RewriteEngine on

RewriteCond %{THE_REQUEST} \.htm\ HTTP/

RewriteRule ^(.+)\.htm$ /$1 [R=301,L] # Эти штуки отрежут '.htm' во всех урлах

RewriteCond %{REQUEST_URI} !(\.htm)$

RewriteRule ^(.+)$ $1.htm [L] # Эти штуки среврайтят урлы без '.htm' на соответствующие файлики

rengen:

$err.="Контакты низя";

А если напишут, например, вот так +З8(ОI2)ЗЧ5678ɘ ?

Или словами?

Всего: 6067