Скрыть объявление
ВАШИ ПРАВА ОГРАНИЧЕНЫ!

Зарегистрируйтесь на форуме, чтобы стать полноценным участником сообщества!

Помогите найти ошибку в php

Тема в разделе "Свободное общение", создана пользователем vulfgar, 21 июл 2016.

21.07.16 в 21:27
21.07.16 в 22:57
10
1.210
0
  1. TopicStarter Overlay
    vulfgar

    Команда форума VIP Кинотрафик v2

    Регистрация:
    3 фев 2016
    Сообщения:
    495
    Лучших ответов:
    0
    Рейтинги:
    +175 / 5 / -0
    Всем привет. Отзовитесь, кто шарит, вот код, в нем ошибка

    PHP:
    if( strpos$this->template"{request=" ) !== false or strpos$this->template"[request=" ) !== false ) {
            
    preg_match_all("#[\{\[]request=['"](.+?)['"]#is",$this->template,$matchs,PREG_PATTERN_ORDER);
            $matchs = ((isset($matchs[1]) and is_array($matchs[1]))?$matchs[1]:array());
            $matchs = array_unique($matchs);
            foreach($matchs as $match){
                $vmatch = explode('
    =',$match);
                $amatch = explode('
    ->',$vmatch[0]);
                $value = $_REQUEST;
                foreach($amatch as $imatch)
                    $value = (($value and isset($value[$imatch]))?$value[$imatch]:false);
                if((isset($vmatch[1]) and (is_array($value) and in_array($vmatch[1],$value) or $vmatch[1]==$value)) or (!isset($vmatch[1]) and $value)){
                    $this->template = preg_replace ( "#\{request=['"]
    {$vmatch[0]}['"]\}#is", (is_array($value)?'array':$value), $this->template );
                    
    $this->template preg_replace "#\[request=['"]{$vmatch[0]}['"]\](.+?)\[/request\]#is", '\1', $this->template );
                    $this->template = preg_replace ( "#\[request=['"]
    {$vmatch[0]}={$vmatch[1]}['"]\](.+?)\[/request\]#is", '\1', $this->template );
                
    } else {
                    
    $this->template preg_replace "#\{request=['"]{$vmatch[0]}['"]\}#is", '', $this->template );
                    $this->template = preg_replace ( "#\[request=['"]
    {$vmatch[0]}['"]\](.+?)\[/request\]#is", '', $this->template );
                    
    $this->template preg_replace "#\[request=['"]{$vmatch[0]}={$vmatch[1]}['"]\](.+?)\[/request\]#is", '', $this->template );
                }
            }
        }
        if( strpos( $this->template, "{request}" ) !== false) {
            var_dump($_REQUEST);
            $this->template = str_replace('
    {request}', '', $this->template );
        }
     
  2. Den

    Den
    Команда форума VIP Кинотрафик v2

    Регистрация:
    19 окт 2015
    Сообщения:
    2.129
    Лучших ответов:
    0
    Рейтинги:
    +1.004 / 6 / -0
    В регулярках косячит двойная кавычка:
    PHP:
    ['"]
    Встречается такой кусок 13 раз.
    Я не шарю в регулярках, поэтому не могу сказать, как это пофиксить.
    Если заменить в этих местах двойные кавычки на одинарные, то ошибок нет. Но как будет работать регулярка - это уже хз.
     
  3. PunPun

    VIP Кинотрафик v2

    Регистрация:
    11 июн 2015
    Сообщения:
    7.297
    Лучших ответов:
    31
    Рейтинги:
    +3.894 / 96 / -0
    заменить на \" экранировать нужно! ЭКРАНИРОВАТЬ!
     
    • Нравится Нравится x 1
  4. Den

    Den
    Команда форума VIP Кинотрафик v2

    Регистрация:
    19 окт 2015
    Сообщения:
    2.129
    Лучших ответов:
    0
    Рейтинги:
    +1.004 / 6 / -0
    Да, действительно. Элементарно же, а не допёр :confused:
     
  5. PunPun

    VIP Кинотрафик v2

    Регистрация:
    11 июн 2015
    Сообщения:
    7.297
    Лучших ответов:
    31
    Рейтинги:
    +3.894 / 96 / -0
    Вот рабочий код, что бы не выносить мозги ТС
    PHP:
    if( strpos$this->template"{request=" ) !== false or strpos$this->template"[request=" ) !== false ) {
        
    preg_match_all("#[\{\[]request=['\"](.+?)['\"]#is",$this->template,$matchs,PREG_PATTERN_ORDER);
        
    $matchs = ((isset($matchs[1]) and is_array($matchs[1]))?$matchs[1]:array());
        
    $matchs array_unique($matchs);
        foreach(
    $matchs as $match){
            
    $vmatch explode('=',$match);
            
    $amatch explode('->',$vmatch[0]);
            
    $value $_REQUEST;
            foreach(
    $amatch as $imatch)
                
    $value = (($value and isset($value[$imatch]))?$value[$imatch]:false);
            if((isset(
    $vmatch[1]) and (is_array($value) and in_array($vmatch[1],$value) or $vmatch[1]==$value)) or (!isset($vmatch[1]) and $value)){
                
    $this->template preg_replace "#\{request=['\"]{$vmatch[0]}['\"]\}#is", (is_array($value)?'array':$value), $this->template );
                
    $this->template preg_replace "#\[request=['\"]{$vmatch[0]}['\"]\](.+?)\[/request\]#is"'\1'$this->template );
                
    $this->template preg_replace "#\[request=['\"]{$vmatch[0]}={$vmatch[1]}['\"]\](.+?)\[/request\]#is"'\1'$this->template );
            } else {
                
    $this->template preg_replace "#\{request=['\"]{$vmatch[0]}['\"]\}#is"''$this->template );
                
    $this->template preg_replace "#\[request=['\"]{$vmatch[0]}['\"]\](.+?)\[/request\]#is"''$this->template );
                
    $this->template preg_replace "#\[request=['\"]{$vmatch[0]}={$vmatch[1]}['\"]\](.+?)\[/request\]#is"''$this->template );
            }
        }
    }
    if( 
    strpos$this->template"{request}" ) !== false) {
        
    var_dump($_REQUEST);
        
    $this->template str_replace('{request}'''$this->template );
    }
     
    • Нравится Нравится x 1
  6. PunPun

    VIP Кинотрафик v2

    Регистрация:
    11 июн 2015
    Сообщения:
    7.297
    Лучших ответов:
    31
    Рейтинги:
    +3.894 / 96 / -0
  7. TopicStarter Overlay
    vulfgar

    Команда форума VIP Кинотрафик v2

    Регистрация:
    3 фев 2016
    Сообщения:
    495
    Лучших ответов:
    0
    Рейтинги:
    +175 / 5 / -0
    @Gameer, спасибо огромное !

    Скоро с помощью этого кода напишу в дневнике как сделать полезный хак для доп полей. Сразу говорю, что идея не моя, но интересная. Т.к. код был с ошибкой, благодаря @Gameer, получится неплохая штука.
     
  8. PunPun

    VIP Кинотрафик v2

    Регистрация:
    11 июн 2015
    Сообщения:
    7.297
    Лучших ответов:
    31
    Рейтинги:
    +3.894 / 96 / -0
    Это https://github.com/n0wheremany/Request-Tag и там все ок написано.
     
  9. TopicStarter Overlay
    vulfgar

    Команда форума VIP Кинотрафик v2

    Регистрация:
    3 фев 2016
    Сообщения:
    495
    Лучших ответов:
    0
    Рейтинги:
    +175 / 5 / -0
    @Gameer, наверное оно, но я нашел в другом месте. Просто @damir, сказал, что xfsearch - это мусор и лучше им не пользоваться, а вместо них использовать категории, так как их хоть можно оптимизировать, а xfsearch нет. Вот я и стал искать способ оптимизировать страницы xfsearch, но нашел сайт с кривым кодом.
     
  10. PunPun

    VIP Кинотрафик v2

    Регистрация:
    11 июн 2015
    Сообщения:
    7.297
    Лучших ответов:
    31
    Рейтинги:
    +3.894 / 96 / -0
    http://zerocoolpro.biz/forum/threads/seo-upravlenie-dop-poljami-dlja-dle-10-2-11-x.3325/ нихуяси
     
  11. TopicStarter Overlay
    vulfgar

    Команда форума VIP Кинотрафик v2

    Регистрация:
    3 фев 2016
    Сообщения:
    495
    Лучших ответов:
    0
    Рейтинги:
    +175 / 5 / -0
Яндекс.Метрика