[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
    Таков вопрос есть к примеру текст

    И есть файл ankors.text

    Вот думаю как можно написать скрипт что бы он находил в текте слова, которые являются анкорами из файла ankors.txt и заменял слово на ссылку... Пока не каких идей не пришло в голову..
     
  2. d_x

    d_x Banned

    Joined:
    25 Mar 2008
    Messages:
    558
    Likes Received:
    650
    Reputations:
    210
    PHP:
    <?php
    $txt
    ="Хорошо живет на свете винни пух, несмотря на то что он странный друг и любит кататься на роликах. Пусть он живет вечно в наших сердцах, настолько больших что ими можно расколоть мешок орехов.";

    $links=array_map('rtrim',file("ankors.txt"));

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

    foreach(
    $links as $link)
    {
      if(!
    $link)
        continue;

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

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

    $txt=str_replace($words_to_replace$links_for_replacement$txt);

    print 
    $txt;
    ?>
    Замена будет регистрозависимой в этом случае, т.е. "Пух" и "пух" - два разных слова.
     
    3 people like this.
  3. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Zircool,
    PHP:
    preg_match_all('#<a href[^>]*>([^<]*)<\/a>#i',file_get_contents('ankors.txt'),$ankors);
    $text=str_ireplace($ankors[1],$ankors[0],$text);
    echo 
    $text;
    Минус - регистр символов будет нарушаться
     
    _________________________
    2 people like this.
  4. shellz[21h]

    shellz[21h] Elder - Старейшина

    Joined:
    20 Dec 2007
    Messages:
    311
    Likes Received:
    68
    Reputations:
    6
    PHP:
    <?
    for(
    $i 1;$i 100;$i++)
    {
    echo 
    $i."<br>";
    }
    ?>
    Этот код выводит от 1 до 100 но выводит значиния все сразу на страницу, а надо сделать, чтоб вывод был по одному значению, а не сразу. Как это можно реализовать? заранее благодарен.
     
  5. FrMn

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

    Joined:
    8 Aug 2008
    Messages:
    51
    Likes Received:
    16
    Reputations:
    7
    PHP:
    echo $word[0];
    //or
    print_r($word);
     
  6. D Mak

    D Mak Elder - Старейшина

    Joined:
    23 Jun 2007
    Messages:
    136
    Likes Received:
    27
    Reputations:
    0
    UnPazz все прально, мну тож до сих пор не понятно почму так сделали, preg_match выводит в массив, $word[0] - то что те надо
     
    1 person likes this.
  7. D Mak

    D Mak Elder - Старейшина

    Joined:
    23 Jun 2007
    Messages:
    136
    Likes Received:
    27
    Reputations:
    0
    shellz[21h] с таймаутом надо чтоле? дык эта, пхп серверный, имхо не получится так, если тока браузер будет выводить содержимое соединения постепенно, тогда надо echo $i."<br>"; sleep(5); //в секундах

    ЗЫ или делай на яваскрипте
     
  8. shellz[21h]

    shellz[21h] Elder - Старейшина

    Joined:
    20 Dec 2007
    Messages:
    311
    Likes Received:
    68
    Reputations:
    6
    При запуске скрипта, скрипт грузится но результатов не выдает... после окончания цикла, скрипт выдает результат. А нужно чтоб в процессе цикла выводился результат. Возможно вообще такое на php реализовать или нет. Хотелось бы увидеть примеры. Всем заранее спасибо.
     
    #5648 shellz[21h], 28 Sep 2008
    Last edited: 28 Sep 2008
  9. Chaak

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

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    PHP:
    <?
    php
    set_time_limit
    (0);
    for(
    $i 1;$i 100;$i++)
    {
    echo 
    $i."<br>";
    ob_flush();
    flush();
    sleep(1);
    }
    ?>
     
    #5649 Chaak, 28 Sep 2008
    Last edited: 28 Sep 2008
    1 person likes this.
  10. shellz[21h]

    shellz[21h] Elder - Старейшина

    Joined:
    20 Dec 2007
    Messages:
    311
    Likes Received:
    68
    Reputations:
    6
    ChaaK огромное тебе спасибо!
     
  11. Zircool

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

    Joined:
    1 Mar 2006
    Messages:
    162
    Likes Received:
    37
    Reputations:
    5
    Почему функция strtolower не работает на хосте на денвере все работет а на хост заливаешь буквы не переводятся в нижний регистр, есть ли ещё какие нибудь функции аналогичные strtolower?
     
  12. DIAgen

    DIAgen Banned Life!

    Joined:
    2 May 2006
    Messages:
    1,055
    Likes Received:
    376
    Reputations:
    460
    Используй фунцию
    PHP:
    mb_strtolower ('Текст','Кодировка текста');
    у меня такая же фигня была, когда основная кодировка была в win-1251, а передовалось в UTF-8, и из-за этого не работала strtolower
     
    1 person likes this.
  13. Zircool

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

    Joined:
    1 Mar 2006
    Messages:
    162
    Likes Received:
    37
    Reputations:
    5
    Как можно подсчитать количество повтрений в массиве, и узнать какие значения повторяются?
     
  14. NuR

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

    Joined:
    11 Dec 2005
    Messages:
    85
    Likes Received:
    58
    Reputations:
    -2
    Code:
    <?php
    $array1 = array("1", "2",  "aa","22222");
    $array2 = array("2", "1", "red");
    $result = array_intersect($array1, $array2);
    var_dump($result); //повторения
    echo count($result);//ну и количество
    ?> 
    
     
    #5654 NuR, 29 Sep 2008
    Last edited: 29 Sep 2008
  15. DIAgen

    DIAgen Banned Life!

    Joined:
    2 May 2006
    Messages:
    1,055
    Likes Received:
    376
    Reputations:
    460
    как понял задача состоит что бы узнать сколько повторяющихся значений в одном масиве.

    Ну так накидал, вроде работает

    PHP:
    $array = array('Этот','вопрос','приходит','ко','всем','приходит','вопрос','приходит','Этот','вопрос','ЖИЗНИ');
    $array_tmp = array();
    $array_tmp_2 = array();
    foreach (
    $array as $index) {
        if(
    in_array($index,$array_tmp)) {
            
    $array_tmp_2[$index] = $array_tmp_2[$index] + 1;
        } else {
            
    $array_tmp[] = $index;
            
    $array_tmp_2[$index]  = 0;
        }
    }
    echo 
    '<pre>Масив состоит из этих частей:<br>';
    print_R($array_tmp);
    echo 
    'Части масива сколько раз повторяются:<br>';
    print_r($array_tmp_2);

    Результат такой
    Масив состоит из этих частей:
     
    #5655 DIAgen, 29 Sep 2008
    Last edited: 29 Sep 2008
    1 person likes this.
  16. d_x

    d_x Banned

    Joined:
    25 Mar 2008
    Messages:
    558
    Likes Received:
    650
    Reputations:
    210
    Вроде как mb_*** функции по умолчанию в php не встроены, поэтому можно ещё в начале скрипта прописать
    PHP:
    setlocale(LC_ALL,'ru_RU.CP1251');
    после чего можно использовать обычную strtolower().
     
    2 people like this.
  17. Chaak

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

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    PHP:
    <?php
    $a 
    = array();
    $dup count($a)-count(array_unique($a));

    echo 
    'Количество дубликатов: '.$dup;
    ?>
     
  18. UnPazz

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

    Joined:
    30 Aug 2008
    Messages:
    95
    Likes Received:
    43
    Reputations:
    6
    Плз, подскажите, как вывести все найденные значения?? =(
     
  19. NuR

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

    Joined:
    11 Dec 2005
    Messages:
    85
    Likes Received:
    58
    Reputations:
    -2
    $str = file_get_contents('text.txt');
    $result = preg_match_all('/[zzz][0-9]"/',$str,$found);
    foreach( $found as $s)
    {
    echo $s."\n";
    }
     
    1 person likes this.
  20. +toxa+

    +toxa+ Smack! SMACK!!!

    Joined:
    16 Jan 2005
    Messages:
    1,674
    Likes Received:
    1,029
    Reputations:
    1,228
    echo '<pre>';
    print_r($found);
     
    _________________________
    1 person likes this.
Thread Status:
Not open for further replies.