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

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

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

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

    Joined:
    1 Mar 2006
    Messages:
    162
    Likes Received:
    37
    Reputations:
    5
    Такой вопрос есть текст
    есть файл tags.txt с ссылками

    PHP:
    $bodyblock=file_get_contents('text.txt');
    $links=array_map('rtrim',file("tags.txt"));

    $links_for_replacement=Array();
    $words_to_replace=Array();

    foreach(
    $links as $link)
    {
      
    $link=str_replace("color: {$color};",null,$link);
      
    $link=str_replace("font-size: {$size_ankor}px;",null,$link);
      
    $link=str_replace(",",null,$link);
      if(!
    $link)
        continue;

      
    preg_match("/>(.+)</",$link,$word);
      if(!isset(
    $word[1]))
        continue;

      
    $links_for_replacement[]=$link;
      
    $words_to_replace[]=$word[1];

    }

    $bodyblock=str_replace($words_to_replace$links_for_replacement$bodyblock);
    Этот скрипт ищет в тексте слова и заменяет их на ссылки с анкором, заменненного слова. Но допустим если у нас слово увидеть и есть в файле tags.txt ссылка с анкором вид то скрипт заменит только часть слова, будет что то типа у<a href="www.vid.ru">вид</a>еть... Как это все дело можно исправить? разбить текст на массив по слову и сравнивать?
     
  2. VDShark

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

    Joined:
    1 Feb 2007
    Messages:
    260
    Likes Received:
    158
    Reputations:
    62
    2Zircool в регулярках есть такая полезная штуковина, которая обзываеся утверждения, которая позволяет проверять символы, следующие до или после ткущего (эт в простейшем приближении...).
    Вот тебе короткое описание, если не поймеш - думаю найти инфу по ээтому вопросу не проблема:

    Code:
     (?:x)  — Сопоставляется с 'x', но не запоминает совпадение. Это называется "незахватывающие скобки". Совпавшая подстрока не может быть вызвана из элементов результирующего массива [1], ..., [n] или из предопределённых свойств $1, ..., $9 RegExp-объектов. 
    x(?=y)  —  Сопоставляется с 'x', только если после 'x' следует 'y'. Например, /Jack(?=Sprat)/ совпадает с 'Jack', только если следом идёт 'Sprat'. /Jack(?=Sprat|Frost)/ совпадает с 'Jack', только если следом идёт 'Sprat' или 'Frost'. Однако ни 'Sprat', ни 'Frost' не являются частью результатов совпадения. 
    x(?!y) —   Сопоставляется с 'x', только если после 'x' не следует 'y'. Например, /\d+(?!\.)/ сопоставляется с числом, только если следом не идёт десятичная точка. Так, например, /\d+(?!\.)/.exec("3.141") совпадает с 141, но не совпадает с 3.141.
    Здесь описаны так называемые "смотрящие вперед" утверждения. Аналогично есть "смотрящие назад" утверждения, с той лишь разнцей, что обозначается
    (?<=
    и
    (?<!
    соответственно.
     
    1 person likes this.
  3. winstrool

    winstrool ~~*MasterBlind*~~

    Joined:
    6 Mar 2007
    Messages:
    1,413
    Likes Received:
    910
    Reputations:
    863
    Народ подскажите плиз как в пхп можно сделать бан по Ip
     
    _________________________
  4. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    с помощью if
     
  5. .:nbd:.

    .:nbd:. Elder - Старейшина

    Joined:
    27 Jul 2008
    Messages:
    97
    Likes Received:
    27
    Reputations:
    1
    PHP:
    <?php
    if ($_SERVER['HTTP_X_FORWARDED_FOR']=='127.0.0.1' || $_SERVER['REMOTE_ADDR']=='127.0.0.1') {header('Location: http://google.ru');}
    ?>
    так например

    Ипы забаненых можно хранить в файле или базе, переписать скрипт для этого дело пары минут. Но принцип примерно такой.
     
    #5685 .:nbd:., 1 Oct 2008
    Last edited: 1 Oct 2008
    2 people like this.
  6. Gadik

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

    Joined:
    29 May 2006
    Messages:
    97
    Likes Received:
    19
    Reputations:
    0
    Добрый день. Скажите пожалуйста какой командой можно запретить вывод ошибок на экран?

    Заранее спасибо.
     
  7. Gadik

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

    Joined:
    29 May 2006
    Messages:
    97
    Likes Received:
    19
    Reputations:
    0
    аха. спасибо, получилось
     
  8. xaldey

    xaldey New Member

    Joined:
    7 Nov 2006
    Messages:
    13
    Likes Received:
    2
    Reputations:
    0
    mmcache_load можна както роскодировать?
     
  9. Zircool

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

    Joined:
    1 Mar 2006
    Messages:
    162
    Likes Received:
    37
    Reputations:
    5
    Еще один вопросик, есть массив ссылок

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

    и есть

    Путь ссылок разный но анкоры одинаковые, так вот как можно удалить из списка ссылки с одинаковыми анкорами, оставив только одну?
     
  10. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Zircool,
    PHP:
    preg_match_all('#<[^>]*>([^<>]*)[^\r\n]*#i',implode("\r\n",$a),$match);
    $tmp=array_combine($match[0],$match[1]);
    $out=array_keys(array_unique($tmp));
    print_r($out);
     
    _________________________
    #5690 Gifts, 1 Oct 2008
    Last edited: 1 Oct 2008
    1 person likes this.
  11. macho94

    macho94 Banned

    Joined:
    9 Nov 2007
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Спасибо прочитал страницу 578 нашел ответ!!))! СПасибо!
     
  12. spamoney

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

    Joined:
    26 Dec 2006
    Messages:
    120
    Likes Received:
    7
    Reputations:
    1
    Всем привет! Очень нужна ваша помощь!

    Допустим есть текст:

    Code:
    <b>Привет</b>. <strong>Бла-бла-бла.</strong><tr><td>Текст - Текст - Текст</td></tr>
    Хочу сделать предварительный просмотр новости, путём обрезания определенного кол-ва символов (например перевые 12 символов, не меньше!!!) от полной новости, но возникает несколько проблем:

    1). Это не законченность предложения, хотелось что бы предложения новости обрезалось до точки.

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

    т.е должно получится так:

    Code:
    <b>Привет.</b> <strong>Бла-бла-бла.
    ,
    а не так, т.к тут всего 10 символов:
    Code:
    <b>Привет.
    2). При решении первой проблемы возникает другая, незакрытые тэги, при обрезании новости получается, что тэги, также обрезаются и оказываются не закрытыми

    Как сделать, что бы, если тэг остался не закрытым то он бы обрезался??

    т.е в конечном итоге мы должны получить такой текст предварительного просмотра:

    Code:
    <b>Привет</b>. Бла-бла-бла.
    Если кто-нибудь сможет - помогите пожалуйста
     
  13. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    spamoney,
    PHP:
    $str="<b>Привет</b>. <strong>Бла-бла-бла.</strong><tr><td>Текст - Текст - Текст</td></tr>";
    preg_match('#^([\s\S]{12}[^\!\.\?]*)[\.\!\?]#i',strip_tags($str),$match);
    echo 
    $match[1];
     
    _________________________
    #5693 Gifts, 1 Oct 2008
    Last edited: 1 Oct 2008
    1 person likes this.
  14. Grema

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

    Joined:
    29 Nov 2005
    Messages:
    109
    Likes Received:
    16
    Reputations:
    -4
    тут вопрос такой появился. у меня есть сайт. там авторизация построена на сессии, когда начинается сессия время начала записывается в мускуль, когда нажимается Выход время окончания тоже записывается в мускуль, а вот как записать время окончания в мускуль если человек не нажал на Выход, а просто закрыл страницу?
     
  15. Grema

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

    Joined:
    29 Nov 2005
    Messages:
    109
    Likes Received:
    16
    Reputations:
    -4
    ну это понятно, какой-то тайм-аут, но как его реализовать!?
     
  16. astrologer

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

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    http://ru.php.net/manual/ru/function.session-set-save-handler.php
     
  17. Zircool

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

    Joined:
    1 Mar 2006
    Messages:
    162
    Likes Received:
    37
    Reputations:
    5
    Вопросик есть один... .есть текст

    Помощи функции str_replace можно заменить любое слово, к примеру любишь, но функция str_replace заменяет все вхождения т.е. в тексте все слова любишь мы заменим на слово котрое нужно, а как можно сделать что бы заменяло лишь певое вхождение, а все остальные посвторения заменяемого слова оставить без изменений?
     
  18. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Zircool
    PHP:
    str_replace  mixed $search  mixed $replace  mixed $subject [, int $&count  ] )
    Четвертым параметром передается количество вхождений, которые надо заменить

    rushter А в чем собственно проблема? Берешь сниффер, авторизируешься и смотришь какие именно параметры передавались в POSTе
     
    _________________________
    #5698 Gifts, 1 Oct 2008
    Last edited: 1 Oct 2008
    1 person likes this.
  19. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    (\d+)_(\d+)
     
    _________________________
    2 people like this.
  20. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Есть ли возможность выполнять ПХП скрипт от имени рута? На сервере имею все права
     
    _________________________
Thread Status:
Not open for further replies.