[php] Новичкам: задаем вопросы

Discussion in 'PHP' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. Keltos

    Keltos Banned

    Joined:
    8 Jul 2009
    Messages:
    1,558
    Likes Received:
    920
    Reputations:
    520
    array_keys expects parameter 1 to be array null given in //// function.php
    invalid argument supplied for foreach //// function.php
    preg replace() [fucntion.preg-replace]: Empty regular expression //// function.php



    http://pastebin.com/z5vebigr - function.php
     
  2. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Первый параметр array_keys должен быть массивом, а не NULL-строкой.

    То же самое, невалидный аргумент в ф-ции foreach...

    Пустая регулярка в preg_replace...

    А дальше сам копай... Это файл из vBulletin... И чтобы проверить эти все функции там, и почему им подаются некорректные параметры, одного function.php недостаточно.
     
  3. domenz

    domenz New Member

    Joined:
    18 May 2011
    Messages:
    26
    Likes Received:
    0
    Reputations:
    0
    Как записать регулярку если предпологаются все языки:
    PHP:
    if(!preg_match("/^[a-zA-Zа-яА-я0-9]{1,30}$/",$name))
    Строка содержащаяся в переменной name в кодировке utf8_bin
     
    #18603 domenz, 4 Jun 2011
    Last edited: 4 Jun 2011
  4. OnlyOn

    OnlyOn Banned

    Joined:
    18 Oct 2010
    Messages:
    252
    Likes Received:
    89
    Reputations:
    36
    Это максимум что можно сделать.
    Разве что разрешить вообще все возможные символы:
    PHP:
    if(!preg_match("/^(.*){1,30}$/",$name))
    но думаю проще будет поставить:

    PHP:
    if(strlen($name) !== 30)
     
  5. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    domenz
    PHP:
    preg_match('~^\w{1,30}$~ui'$in$out);
    Символ \w указывает на символы составляющие слово (в том числе разнообразные буквы с диакритикой (закорючками)), модификатор "u" показывает, что следует искать UTF-8 символы

    OnlyOn strlen от строки и длина значащих букв в UTF-8 понятия разные
     
    _________________________
    1 person likes this.
  6. OnlyOn

    OnlyOn Banned

    Joined:
    18 Oct 2010
    Messages:
    252
    Likes Received:
    89
    Reputations:
    36
    Судя по всему автору просто надо проверить количество символов в строке...
    Хотя не прав мб)

    Там кстати не нужно выход проверять ($out), он же его в if() запихнул
     
  7. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    OnlyOn встретив двусмысленность - отбрось искушение угадать (с)

    Автор ничего не написал про: что, зачем и почему ему нужно.

    Два вопроса - Где это написано? Как с помощью preg_match "проверять" выход?
     
    _________________________
  8. OnlyOn

    OnlyOn Banned

    Joined:
    18 Oct 2010
    Messages:
    252
    Likes Received:
    89
    Reputations:
    36
    Ответы:
    в строчке кода автора вопроса =) Там описана только входная строчка, а выход ему не надо.

    Извиняюсь. Имел ввиду входной текст без получения результата на выход.
     
  9. Nelz.

    Nelz. Member

    Joined:
    2 Aug 2010
    Messages:
    151
    Likes Received:
    7
    Reputations:
    0
    всем привет

    есть такая строка $str = 'ssss5sssssss55ss5s5s55s';
    как узнать сколько (s) и сколько (5)?
     
  10. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Nelz. http://ru.php.net/substr_count
     
    _________________________
  11. qaz

    qaz Elder - Старейшина

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    на хостинге запретили курл и файл гет контентс, как ещо можно скопировать идалённую страницу?
     
  12. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    qaz http://php.net/socket_create http://php.net/fsockopen
     
    _________________________
  13. qaz

    qaz Elder - Старейшина

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    спасибо, пойду пробовать,
    возникла ещо одна маленькая проблемка
    вот код страницы
    PHP:
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Style-Type" content="text/css" /><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Spaces/Лента</title>
    <style type="text/css">
    body{font-weight:normal;font-size:medium;font-family:Arial;background-color:#ffffff;margin:0px auto;padding:0px;color:#000000;text-align:left;max-width:500px}
    a:link,a:visited{color:#006699}
    a:visited{color:#666666;}
    a:hover{color: #ff0000;text-decoration: underline}
    a img{border: 0px;}

    div.row3{padding:3px;background-color:#e1e1e1}
    div.row4{padding:3px;background-color:#ffffff}
    div.blueline{padding:3px;background-color:#e7f1fe;border-top:1px solid #99ccff;border-bottom:1px solid #AFCDDC}
    div.busi{padding:3px;background-color:#fff9d7;border-top:1px solid #e2c822;border-bottom:1px solid #e2c822}
    div.backlink{background-color:#EFF3F6;padding:2px}
    div.block{margin:2px;padding:1px;border-top:1px dotted gray;border-bottom:1px dotted gray}
    div.title{padding:3px;background-color:#d7ddf8;border-bottom:1px dotted #AFCDDC}
    div.odd{padding:3px;background-color:#edeff4;border-top:1px dotted #CCC}
    div.even{padding:3px;background-color:#fff;border-top:1px dotted #CCC}
    div.blue{padding:3px;background-color:#e7f1fe;border-top:1px dotted #99ccff}
    #pnavi {padding:3px;background-color:#d3d3d3;border-top:1px solid #999}
    #pnavi a:link,#pnavi a:visited,#pnavi a:active  {text-decoration:none}
    #pnavi a:focus,#pnavi a:hover,#pnavi a:active {background-color:#fff}

    div.main {
        border-left: 1px solid #999999;
        border-right: 1px solid #999999;
        background-color: #ffffff;
    }

    #header_path{border-left:1px solid #abbefb;border-right:1px solid #abbefb;border-bottom:1px solid #abbefb;border-left: 1px solid #999999;border-right: 1px solid #999999;background:#E7F1FE;margin:0px;padding:3px}
    #footer_path{border-left:1px solid #abbefb;border-right:1px solid #abbefb;border-left: 1px solid #999999;border-right: 1px solid #999999;background:#E7F1FE;margin:0px;padding:3px}
    #header_path a:link,#header_path a:visited,#footer_path a:link,#footer_path a:visited {text-decoration:none}

    #reklama{
        background-color:#ccddee;
        border-left: 1px solid #999999;
        border-right: 1px solid #999999;
        border-top:1px solid #6699cc;
        border-bottom:1px solid #6699cc;
        padding:2px;
    }
    .block_hr {border-bottom:1px dotted #abbefb}
    .block_hrs {padding:2px;border-bottom:1px solid #999999;width:120px;}
    span.page {margin:2px;padding:1px;border:1px solid #e0e0e0}
    span.page_is {margin:2px;padding:1px;border:2px solid #339933}
    a.icolink {vertical-align: middle}
    img.icon {vertical-align: middle}
    .clear{ clear:both}


    #navi {color:#9999ff;font-size:small;padding:4px 2px 5px 4px;background-color:#aec6dc;border: 1px solid #abbefb;border-left: 1px solid #999999;border-right: 1px solid #999999}
    #navi a:link,#navi a:visited {color:#003366;text-decoration:none;font-size:small}
    #navi a:focus,#navi a:hover,#navi a:active {color:#3b5998;background-color:#fff}
    #time {color:#000;font-size:small;}
    .newevent {color:#ff0000;font-size:small;}
    </style>
    </head><body><div id="navi"><a href="http://spaces.ru/mysite/?sid=7020582082684759&amp;link_id=">Дом</a> | <a href="http://spaces.ru/mail2/?sid=7020582082684759&amp;link_id=">Почта</a> | <a href="http://spaces.ru/journal/?jsort=2&amp;filter=4&amp;sid=7020582082684759&amp;link_id=">Жур</a> | <a href="http://spaces.ru/lenta/?sid=7020582082684759&amp;link_id=">Лента<span class="newevent">(200)</span></a><br/><div id="time"">16:11:33 MSK</div></div><div id="header_path"><a href="http://spaces.ru/m/?sid=7020582082684759">Spaces</a>/<a href="http://spaces.ru/lenta/?sid=7020582082684759">Лента</a></div><div class="main">Вы зашли из необычного места. Убедитесь, что вы действительно находитесь на Spaces.ru.<br/>Чтобы продолжить, введите последние 4-ре цифры вашего номера:<br/><span style="color:green">+7925148 . . . .</span><br/><form method="POST" action="http://spaces.ru/mysite/?sid=7020582082684759"><input type="hidden" name="sid" value="7020582082684759"/><input type="hidden" name="name" value=""/><input type="text" name="pn_nums" size="4" value=""/> <input type="submit" value="Ввести"/></form><div class="busi"><span style="color:darkred;font-size:small">Если вы не помните свой номер, можете обратиться в Support.</span></div><div class="backlink"><img src="/img/Back.gif" alt=""/><a href="http://spaces.ru?sid=7020582082684759&amp;logout=1">Выход</a></div></div><div id="reklama"><img src="/img/reklama.gif" alt=""/><br/>
    <div style="text-align:center"><a href="http://partners.erwap.ru/?nato">Партнерская программа нового поколения</a><br/><a href="http://up.erwap.ru/?nato">Как не платить за телефон!</a></div></div><div id="footer_path"><a href="http://spaces.ru/m/?sid=7020582082684759">Spaces</a>/<a href="http://spaces.ru/lenta/?sid=7020582082684759">Лента</a></div><div id="navi"><a href="http://spaces.ru/?online_help=1&amp;sid=7020582082684759&amp;link_id="><span style="color:#009933">Помощь</span></a> | <a href="http://spaces.ru/mysite/?name=Veetoz&amp;sid=7020582082684759&amp;link_id=">Дом</a> | <a href="http://spaces.ru/favorites/?name=Veetoz&amp;sid=7020582082684759&amp;link_id=">Закл</a> | <a href="http://spaces.ru/forums/?sid=7020582082684759&amp;link_id=">Фор</a> | <a href="http://spaces.ru/diaries/?sid=7020582082684759&amp;link_id=">Дн-ки</a> | <a href="http://spaces.ru/chat/?sid=7020582082684759&amp;link_id=">Чат</a> | <a href="http://spaces.ru/mysite/?mycomm=1&amp;name=Veetoz&amp;sid=7020582082684759&amp;link_id=">Соо</a> | <a href="http://spaces.ru/shared_zone/?sid=7020582082684759&amp;link_id=">ЗО</a> | <a href="http://spaces.ru/settings/?sid=7020582082684759&amp;change=14&amp;link_id=">+</a></div><div class="row4"><script type="text/javascript" src="http://mobtop.ru/c/16.js"></script><noscript><a href="http://mobtop.ru/in/16"><img src="http://mobtop.ru/16.gif" alt="MobTop - top mobile rating"/></a></noscript></div>
    </body>
    </html>
    нужно спарсить ксс
    я делаю ето так

    PHP:
    preg_match_all("/<style type=\"text\/css\">(.*?)([.\n]+)<\/style>/s",$doc,$goom);  
    парсит та всё но некоторые части пропускает
    вот
    PHP:
    <style type="text/css">
    body{font-weight:normal;font-size:medium;font-family:Arial;background-color:#ffffff;margin:0px auto;padding:0px;color:#000000;text-align:left}
    a:link,a:visited{color:#006699}
    a:visited{color:#666666;}
    a:hover{color#ff0000;text-decoration: underline}
    a img{border0px;}
    .
    main{}
    div.row3{padding:1px;background-color:#e1e1e1}
    div.row4{padding:1px;background-color:#ffffff}
    div.backlink{background-color:#EFF3F6;padding:2px}
    div.blueline{padding:1px;background-color:#e7f1fe;border-top:1px solid #99ccff;border-bottom:1px solid #AFCDDC}
    div.block{margin:2px;padding:1px;border-top:1px dotted gray;border-bottom:1px dotted gray}
    div.busi{padding:2px;background-color:#fff9d7;border-top:1px solid #e2c822;border-bottom:1px solid #e2c822}
    div.title{padding:3px;background-color:#d7ddf8;border-bottom:1px dotted #AFCDDC}
    div.odd{padding:1px;background-color:#edeff4;border-top:1px dotted #CCC}
    div.even{padding:1px;background-color:#fff;border-top:1px dotted #CCC}
    div.blue{padding:3px;background-color:#e7f1fe;border-top:1px dotted #99ccff}
    #pnavi {padding:3px;background-color:#d3d3d3;border-top:1px solid #999}
    #pnavi a:link,#pnavi a:visited {text-decoration:none}
    #pnavi a:focus,#pnavi a:hover,#pnavi a:active {background-color:#fff}

    div.main {
    }

    #header_path{border-left:1px solid #abbefb;border-right:1px solid #abbefb;border-bottom:1px solid #abbefb;border-left: 1px solid #999999;border-right: 1px solid #999999;background:#e8e8e8;margin:0px;padding:3px}
    #footer_path{border-left:1px solid #abbefb;border-right:1px solid #abbefb;border-left: 1px solid #999999;border-right: 1px solid #999999;background:#e8e8e8;margin:0px;padding:3px}
    #header_path a:link,#header_path a:visited,#footer_path a:link,#footer_path a:visited {text-decoration:none}

    #reklama{
        
    background-color:#ccddee;
        
    border-left1px solid #999999;
        
    border-right1px solid #999999;
        
    border-top:1px solid #6699cc;
        
    border-bottom:1px solid #6699cc;
        
    padding:2px;
    }

    .
    block_hr {border-bottom:1px dotted #abbefb}
    .block_hrs {padding:2px;border-bottom:1px solid #999999;width:120px;}
    span.page {margin:2px;padding:1px;border:1px solid #e0e0e0}
    span.page_is {margin:2px;padding:1px;border:2px solid #339933}
    a.icolink {vertical-alignmiddle}
    img.icon {vertical-alignmiddle}
    .
    clearclear:both}

    #navi {color:#9999ff;font-size:small;padding:4px 2px 5px 4px;background-color:#aec6dc;border: 1px solid #abbefb;border-left: 1px solid #999999;border-right: 1px solid #999999}
    #navi a:link,#navi a:visited {color:#003366;text-decoration:none;font-size:small}
    #navi a:focus,#navi a:hover,#navi a:active {color:#3b5998;background-color:#fff}
    #time {color:#000;font-size:small;}
    .newevent {color:#ff0000;font-size:small;}
    </style


    как исправить штоб парсил всё и ничего не пропускал?
     
  14. Fuckel

    Fuckel Banned

    Joined:
    16 Jan 2008
    Messages:
    274
    Likes Received:
    59
    Reputations:
    6
    @qaz
    Code:
    /<style.*>(.*)<\/style>/Uis
    Тема регулярок по соседству http://forum.antichat.ru/threadnav92492-1-10.html
     
  15. qaz

    qaz Elder - Старейшина

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    а, спасибо, спросил там, кстати твой код не помог, тот же самый ефект
     
  16. Fuckel

    Fuckel Banned

    Joined:
    16 Jan 2008
    Messages:
    274
    Likes Received:
    59
    Reputations:
    6
    PHP:
    <?
    $html file_get_contents('http://forum.antichat.ru');
    preg_match_all('/<style.*>(.*)<\/style>/Uis'$html$matches);
    var_dump($matches);
     
  17. geforse

    geforse Elder - Старейшина

    Joined:
    2 Mar 2008
    Messages:
    617
    Likes Received:
    290
    Reputations:
    1
    PHP:
    $array = array("1cd6c7f718f49fc202df7bfdc695eeae911770b1");

    echo 
    array_search("1cd6c7f718f49fc202df7bfdc695eeae911770b1"$array);
    Почему выдаёт false :confused:
     
  18. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    geforse это не False а ноль, очевидно, что массивы нумеруются начиная с нулевого элемента. Следует внимательно читать варнинги в документации:
     
    _________________________
    1 person likes this.
  19. geforse

    geforse Elder - Старейшина

    Joined:
    2 Mar 2008
    Messages:
    617
    Likes Received:
    290
    Reputations:
    1
    PHP:
    $array = array("1cd6c7f718f49fc202df7bfdc695eeae911770b1");
    echo (
    array_search("1cd6c7f718f49fc202df7bfdc695eeae911770b1"$array)) ? "нашлось" "не нашлось"// не нашлось
    Gifts, не пойму как эта функция работает)
     
  20. Fuckel

    Fuckel Banned

    Joined:
    16 Jan 2008
    Messages:
    274
    Likes Received:
    59
    Reputations:
    6
    http://php.net/manual/ru/function.array-search.php
    Перевод поста Giftа

    Необходимо сравнить
    PHP:
    echo (array_search("1cd6c7f718f49fc202df7bfdc695eeae911770b1"$array) !== false) ? "нашлось" "не нашлось";
     
    #18620 Fuckel, 8 Jun 2011
    Last edited: 8 Jun 2011
    1 person likes this.
Thread Status:
Not open for further replies.