php оптимизировать пару строк, а то слетает иногда

12 3
wlad2
На сайте с 17.07.2008
Offline
153
1134

вот код

$str = "$dt[3]";$str = mb_strtolower($str);$str = str_replace(array(' ', ',', '.'), array('-'), $str);

который на ходу прикручивает ЧПУ ссылку где угодно, на любом скрипте можно подкрутить и в .htaccess добавить хитрый код.

ПРОБЛЕМА в том, что при генерации страницы, код иногда не срабатывает (редко) и в место ссылки sayt.ru/ссылка.html получается что-то вроде sayt.ru/-.html

Возможно есть готовые решения более работоспособные и правильные?

[umka]
На сайте с 25.05.2008
Offline
456
#1

Вообще, это называется не "оптимизировать", а "поправить".

У меня к вам два вопроса:

1. Вы всегда всё в одну строчку пишете? :)

2. В каких именно случаях код делает неправильную замену? приведите примеры.

Лог в помощь!
wlad2
На сайте с 17.07.2008
Offline
153
#2
1. Вы всегда всё в одну строчку пишете? :)

так получилось

2. В каких именно случаях код делает неправильную замену? приведите примеры.

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

[umka]
На сайте с 25.05.2008
Offline
456
#3

То есть, при абсолютно одинаковых условиях и при абсолютно одинаковых входных данных получается разный результат? :)

frantic
На сайте с 09.02.2009
Offline
27
#4
wlad2:

$str = "$dt[3]";

вот это не понимаю)

wlad2
На сайте с 17.07.2008
Offline
153
#5
'[umka:
;6469722']То есть, при абсолютно одинаковых условиях и при абсолютно одинаковых входных данных получается разный результат? :)

да

frantic:
вот это не понимаю)

<a href="/cat-45/$str">$dt[3]</a>

анкор ссылки превращаем в ЧПУ ссылки..

таких ссылок на странице 50 штук подряд

frantic
На сайте с 09.02.2009
Offline
27
#6
wlad2:
да

<a href="/cat-45/$str">$dt[3]</a>
анкор ссылки превращаем в ЧПУ ссылки..

таких ссылок на странице 50 штук подряд

ладно, в каких случаях код не срабатывает? И откуда берется это $dt[3] ?

wlad2
На сайте с 17.07.2008
Offline
153
#7
frantic:
ладно, в каких случаях код не срабатывает? И откуда берется это $dt[3] ?

// БЛОК СОРТИРОВКИ

$p=$itogo; $ivip=0;do {$p--; $dt=explode("|", $lines[$p]);if ($dt[9]=="vip") {
$ivip++;}$newlines[$p]="$dt[9]|$dt[11]|$dt[0]|$dt[1]|$dt[2]|$dt[3]|$dt[4]|$dt[5]|$dt[6]|$dt[7]|$dt[8]|$dt[10]|$dt[12]|$dt[13]|$dt[14]|$dt[15]|$dt[16]|$dt[17]|$dt[18]|";
} while($p > 0);
usort($newlines,"prcmp");$p=$itogo;do {
$p--; $dt=explode("|", $newlines[$p]);$lines[$p]="$dt[2]|$dt[3]|$dt[4]|$dt[5]|$dt[6]|$dt[7]|$dt[8]|$dt[9]|$dt[10]|$dt[0]|$dt[11]|$dt[1]|$dt[12]|$dt[13]|$dt[14]|$dt[15]|$dt[16]|$dt[17]|$dt[18]|\r\n";
}
while($p > 0);// КОНЕЦ сортировки// Показываем QQ ОБЪЯВЛЕНИЙ
$maxpage=ceil(($maxi+1)/$qq); if ($page>$maxpage) {
$page=$maxpage;}$fm=$qq*($page-1); if ($fm>$maxi) {$fm=$maxi-$qq;}$lm=$fm+$qq; if ($lm>$maxi) {$lm=$maxi+1;}
do {$dt=explode("|", $lines[$fm]);$fm++;
//РЕГИСТР
$str = "$dt[3]";$str = mb_strtolower($str);$str = str_replace(array(' ', ',', '.'), array('-'), $str);//РЕГИСТР
$url="/$str/$fid/$dt[10]/";

не срабатывает рандомно, из 20 раз не сработает 1 раз, но если не срабатывает то все 50 ссылок страницы не срабатывают.

I
На сайте с 29.04.2006
Offline
135
#8

Ёлки палки ... такое и в страшнем сне не присниться ....

InoHacker
На сайте с 18.10.2009
Offline
75
#9

if ($fm>$maxi) {$fm=$maxi-$qq;}$lm=$fm+$qq;

Я бы предложил Вам еще и {} убрать. Работать будет так же, но позволит запутать еще больше того, кто "читает" Ваш код.

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

Магазин аккаунтов с балансом Litres,DNS,Ozon,Rotapost и еще 50+ других сервисов тут - vk.cc/7QK0Sk
[Удален]
#10
wlad2:
// БЛОК СОРТИРОВКИ

$p=$itogo; $ivip=0;do {$p--; $dt=explode("|", $lines[$p]);if ($dt[9]=="vip") {
$ivip++;}$newlines[$p]="$dt[9]|$dt[11]|$dt[0]|$dt[1]|$dt[2]|$dt[3]|$dt[4]|$dt[5]|$dt[6]|$dt[7]|$dt[8]|$dt[10]|$dt[12]|$dt[13]|$dt[14]|$dt[15]|$dt[16]|$dt[17]|$dt[18]|";
} while($p > 0);
usort($newlines,"prcmp");$p=$itogo;do {
$p--; $dt=explode("|", $newlines[$p]);$lines[$p]="$dt[2]|$dt[3]|$dt[4]|$dt[5]|$dt[6]|$dt[7]|$dt[8]|$dt[9]|$dt[10]|$dt[0]|$dt[11]|$dt[1]|$dt[12]|$dt[13]|$dt[14]|$dt[15]|$dt[16]|$dt[17]|$dt[18]|\r\n";
}
while($p > 0);// КОНЕЦ сортировки// Показываем QQ ОБЪЯВЛЕНИЙ
$maxpage=ceil(($maxi+1)/$qq); if ($page>$maxpage) {
$page=$maxpage;}$fm=$qq*($page-1); if ($fm>$maxi) {$fm=$maxi-$qq;}$lm=$fm+$qq; if ($lm>$maxi) {$lm=$maxi+1;}
do {$dt=explode("|", $lines[$fm]);$fm++;
//РЕГИСТР
$str = "$dt[3]";$str = mb_strtolower($str);$str = str_replace(array(' ', ',', '.'), array('-'), $str);//РЕГИСТР
$url="/$str/$fid/$dt[10]/";


не срабатывает рандомно, из 20 раз не сработает 1 раз, но если не срабатывает то все 50 ссылок страницы не срабатывают.

АФИГЕТЬ!!!!

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий