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

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

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

    dokwill New Member

    Joined:
    25 Jun 2007
    Messages:
    21
    Likes Received:
    1
    Reputations:
    0
    есть исходные данные - около 1000 штук - числовые значения в файлике записанные в столюбик in.txt - значения ( от 10 - 6000)

    надо каждое значение пересчитать - и присвоить другую величину - исходя из определенного диапазона. зпвисимость не прямая поэтому вот такой диапазон

    if (($e>=0) and ($e<=500)) {$b[$k]=15000;}
    if (($e>=500) and ($e<=700)) {$b[$k]=18000;}
    if (($e>=700) and ($e<=1000)) {$b[$k]=23000;}
    if (($e>=1000) and ($e<=1300)) {$b[$k]=26000;}
    if (($e>=1300) and ($e<=1600)) {$b[$k]=29000;}
    if (($e>=1600) and ($e<=1900)) {$b[$k]=34000;}
    if (($e>=1900) and ($e<=2100)) {$b[$k]=38000;}
    if (($e>=2100) and ($e<=2400)) {$b[$k]=42000;}
    if (($e>=2100) and ($e<=2400)) {$b[$k]=44000;}
    if (($e>=2400) and ($e<=2700)) {$b[$k]=46000;}
    if (($e>=2700) and ($e<=3000)) {$b[$k]=48000;}
    if (($e>=3000) and ($e<=3300)) {$b[$k]=53000;}
    if (($e>=3300) and ($e<=3600)) {$b[$k]=56000;}
    if (($e>=3600) and ($e<=3900)) {$b[$k]=60000;}
    if (($e>=3900) and ($e<=4200)) {$b[$k]=65000;}
    if (($e>=4200) and ($e<=4500)) {$b[$k]=70000;}
    if (($e>=4500) and ($e<=4800)) {$b[$k]=75000;}
    if (($e>=4800) and ($e<=5100)) {$b[$k]=80000;}
    if (($e>=5100) and ($e<=5400)) {$b[$k]=85000;}
    if (($e>=5400) and ($e<=5700)) {$b[$k]=90000;}
    if (($e>=5700) and ($e<=6000)) {$b[$k]=95000;}

    результаты в файл
     
  2. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    такая задачка

    есть страница в которой есть текст


    PHP:
    Пользователь (такойтоне обнаружен
    нужно спарсить страницу и
    нужно чтоб если на странице есть слова

    ,,не обнаружен,,

    выводило там например... слово ошибка(пофиг што)

    я главное непойму как делать поиск русских символов
     
  3. Skofield

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

    Joined:
    27 Aug 2008
    Messages:
    960
    Likes Received:
    390
    Reputations:
    58
    qaz,
    PHP:
    $strstr strstr($str'не обнаружен');
    if (
    $strstr != FALSE)
    {
        echo 
    'Ошибка';
    }
     
  4. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    так strstr( насколько я помню ищет из строки, а мне нужно из исходного кода страници, оразве такое покатит?(непашет вариант)
     
  5. chexec

    chexec Member

    Joined:
    19 Nov 2010
    Messages:
    67
    Likes Received:
    11
    Reputations:
    3
    strstr нормально ищет кириллические символы, ты кодировку смотри в какой твой файл и в какой твой исходный код.
    это не важно сколько там строк
     
  6. Yakim

    Yakim New Member

    Joined:
    19 Nov 2010
    Messages:
    21
    Likes Received:
    1
    Reputations:
    0
    строка - это тип данных, которая может содержать символы перевода строки (в человеческом понимании)
     
  7. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    серовно от скрипта никакой реакии
     
  8. Skofield

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

    Joined:
    27 Aug 2008
    Messages:
    960
    Likes Received:
    390
    Reputations:
    58
    Может у тебя с кодировкой проблемы?
    Попробуй в начало добавить:
    ini_set('default_charset','windows-1251');
     
  9. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    кодировка у меня utf-8

    при ini_set('default_charset','windows-1251'); появляются крякозябры

    при

    ini_set('default_charset','utf-8'); норм текст
     
  10. Skofield

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

    Joined:
    27 Aug 2008
    Messages:
    960
    Likes Received:
    390
    Reputations:
    58
    И что strstr ничего не находит?
     
  11. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    qaz, свой код покажите, а лучше вместе с URL-ом
     
  12. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    qaz Сохраните файл скрипта в кодировке UTF-8 без BOM

    Skofield strstr - плохой способ проверки наличия подстроки в строке, по той причине, что происходит копирование данных. Не зря мануал рекомендует использовать strpos. Плюс сравнивать надо с помощью === или !== из-за большой любви ПХП делать неявное приведение типов
     
    _________________________
  13. Skofield

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

    Joined:
    27 Aug 2008
    Messages:
    960
    Likes Received:
    390
    Reputations:
    58
    dokwill,
    PHP:
    <?php
    $b
    =array();
    $m=file('in.txt');
    foreach(
    $m as $k => $e)
    {
    if ((
    $e>=0) and ($e<=500)) {$b[$k]=15000;}
    if ((
    $e>=500) and ($e<=700)) {$b[$k]=18000;}
    if ((
    $e>=700) and ($e<=1000)) {$b[$k]=23000;}
    if ((
    $e>=1000) and ($e<=1300)) {$b[$k]=26000;}
    if ((
    $e>=1300) and ($e<=1600)) {$b[$k]=29000;}
    if ((
    $e>=1600) and ($e<=1900)) {$b[$k]=34000;}
    if ((
    $e>=1900) and ($e<=2100)) {$b[$k]=38000;}
    if ((
    $e>=2100) and ($e<=2400)) {$b[$k]=42000;}
    if ((
    $e>=2100) and ($e<=2400)) {$b[$k]=44000;}
    if ((
    $e>=2400) and ($e<=2700)) {$b[$k]=46000;}
    if ((
    $e>=2700) and ($e<=3000)) {$b[$k]=48000;}
    if ((
    $e>=3000) and ($e<=3300)) {$b[$k]=53000;}
    if ((
    $e>=3300) and ($e<=3600)) {$b[$k]=56000;}
    if ((
    $e>=3600) and ($e<=3900)) {$b[$k]=60000;}
    if ((
    $e>=3900) and ($e<=4200)) {$b[$k]=65000;}
    if ((
    $e>=4200) and ($e<=4500)) {$b[$k]=70000;}
    if ((
    $e>=4500) and ($e<=4800)) {$b[$k]=75000;}
    if ((
    $e>=4800) and ($e<=5100)) {$b[$k]=80000;}
    if ((
    $e>=5100) and ($e<=5400)) {$b[$k]=85000;}
    if ((
    $e>=5400) and ($e<=5700)) {$b[$k]=90000;}
    if ((
    $e>=5700) and ($e<=6000)) {$b[$k]=95000;}


    foreach (
    $b as $v)
    {
        
    $res fopen('result.txt''a');
        
    fwrite($res$v."\n");
        
    fclose($res);
        print 
    $v."<br>\n";
    }
    ?>
     
  14. Adio

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

    Joined:
    23 May 2005
    Messages:
    1,646
    Likes Received:
    148
    Reputations:
    18
    Вопрос.

    Как сделать скрипт без применение операторов FOR WHILE FOREACH

    Скрипт должен открыть текстовый файл
    и выделить рэндумно слова жирным текстом ?

    Как такое сделать без оператора FOR ?

    Т.е открываем файл читаем все, а потом применяем теги <b></b> к словам к примеру взять рэндумно 10 слов и наложить на них теги б б

    Спасибо
     
  15. Expl0ited

    Expl0ited Members of Antichat

    Joined:
    16 Jul 2010
    Messages:
    1,035
    Likes Received:
    534
    Reputations:
    935
    Code:
    // in.txt
    Вопрос.
    
    Как сделать скрипт без применение операторов FOR WHILE FOREACH
    
    Скрипт должен открыть текстовый файл
    и выделить рэндумно слова жирным текстом ?
    
    Как такое сделать без оператора FOR ?
    
    Т.е открываем файл читаем все, а потом применяем теги <b></b> к словам к примеру взять рэндумно 10 слов и наложить на них теги б б
    
    Спасибо
    
    PHP:
    // script.php 
    <?php

    $rand 
    = function($array$in$out)
    {
        return 
    $in.$array[array_rand($array1)].$out;
    };

    $text file_get_contents('in.txt');
    $text explode(' '$text);
    $text str_replace(array("\n""\r"), ''$text);


    print 
    $rand($text'<b>''</b>').'<br>';
    print 
    $rand($text'<b>''</b>').'<br>';
    print 
    $rand($text'<b>''</b>').'<br>';

    ?>
    Только смысл :confused:
     
    _________________________
  16. Adio

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

    Joined:
    23 May 2005
    Messages:
    1,646
    Likes Received:
    148
    Reputations:
    18
    ошибка

    Parse error: syntax error, unexpected T_FUNCTION


    Я по коду понял что оно будет заменять жирным каждую новую строку ? Если так то нет.

    К примеру есть предложение большое.

    В это предложении к примеру должно быть заменено слово 3 - 4 раза с тегами т.е читая предложение будет виднно 3-4 выделенных жирным слова
     
  17. Expl0ited

    Expl0ited Members of Antichat

    Joined:
    16 Jul 2010
    Messages:
    1,035
    Likes Received:
    534
    Reputations:
    935
    Вообщем как-то так:
    PHP:
    <?php 

    # НАСТОЙКИ
    $file          file_get_contents('../in.txt'); # файл с текстом
    $count         10# количество слов для замены

    # КОД
    function magic_function_search($array_name$count)
    {
        
    $search str_repeat('$'.$array_name.'[rand(0,count($'.$array_name.'))],'$count);
        
    $search '('.substr($search0strlen($search)-1).')';
        return 
    '$search = array'.$search.';';
    }

    function 
    magic_function_replac($array_name$count)
    {
        
    $replace str_repeat('\'<b>\'.$'.$array_name.'[rand(0,count($'.$array_name.'))].\'</b>\','$count);
        
    $replace '('.substr($replace0strlen($replace)-1).')';
        return 
    '$replace = array'.$replace.';';
    }

    $for_replace explode(' '$file); 
    $for_replace preg_replace("/[^a-z0-9а-яё]/i"''$for_replace);
     
    eval( 
    magic_function_search('for_replace'$count) );
    eval( 
    magic_function_replac('for_replace'$count) );

    $text str_replace($search$replace$file);

    print 
    $text;
    ?>  
    Было:
    Code:
    Саша Грей (англ. Sasha Grey, настоящее имя — Марина Энн Хэнцис, англ. Marina Ann Hantzis; родилась 14 марта 1988 года в Сакраменто, Калифорния) 
    
    — американская порноактриса, известная также своим творчеством в сфере кинематографа, моды и музыки. Участница музыкальной группы «aTelecine», 
    
    играющей электро-индастриал.
    В 18 лет Саша переехала из Сакраменто в Лос-Анджелес и в скором времени стала сниматься в порнографических фильмах. В 2007, 2008 и 2010 годах 
    
    она выиграла несколько номинаций премии AVN Awards, а также была названа «Лучшей старлеткой» в 2007 году по версии XRCO. Параллельно с работой 
    
    в порноиндустрии Саша Грей снимается как модель. В 2009 году увидела свет картина «Девушка по вызову» режиссёра Стивена Содерберга, где Грей 
    
    сыграла главную роль.
    В 2009 году Саша заявила в интервью журналу Rolling Stone, что обручена с фотографом Иэном Синнамоном.
    8 апреля 2011 года на своей странице в Facebook Саша Грей объявила о том, что прекращает сниматься в порно.
    Стало:
    Code:
    Саша Грей (англ. Sasha Grey, настоящее имя — Марина Энн <b>она</b>, англ. Marina Ann Hantzis; родилась 14 марта 1988 года <b>Stone</b> Сакраменто, Калифорния) — американская <b>играющей</b>актриса, из<b>Stone</b>естная также с<b>Stone</b>оим т<b>Stone</b>орчест<b>Stone</b>ом <b>Stone</b> сфере кинематографа, моды и музыки. Участница музыкальной группы «aTelecine», играющей электро-индастриал.
    
    <b>у<b>Stone</b>идела</b> <b>скором</b> лет Саша переехала из Сакраменто <b>Stone</b> Лос-Анджелес и <b>Stone</b> скором <b>Stone</b>ремени стала сниматься <b>Stone</b> <b>играющей</b>графических фильмах. <b>у<b>Stone</b>идела</b> 2007, 2008 и 2010 годах она <b>Stone</b>ыиграла несколько номинаций премии AVN Awards, а также была наз<b>Stone</b>ана «Лучшей старлеткой» <b>Stone</b> 2007 <b>2009</b> по <b>Stone</b>ерсии XRCO. Параллельно с работой <b>Stone</b> <b>играющей</b>индустрии Саша Грей снимается как модель. <b>у<b>Stone</b>идела</b> 2009 <b>2009</b> у<b>Stone</b>идела с<b>Stone</b>ет картина «Де<b>Stone</b>ушка по <b>Stone</b>ызо<b>Stone</b>у» режиссёра Сти<b>Stone</b>ена Содерберга, где Грей сыграла гла<b>Stone</b>ную роль.
    
    <b>у<b>Stone</b>идела</b> 2009 <b>2009</b> Саша зая<b>Stone</b>ила <b>Stone</b> интер<b>Stone</b>ью журналу Rolling Stone, что обручена с фотографом Иэном Синнамоном.
    
    8 <b>aTelecine</b> 2011 года на с<b>Stone</b>оей странице <b>Stone</b> Facebook Саша Грей объя<b>Stone</b>ила о том, что прекращает сниматься <b>Stone</b> <b>играющей</b>.  
    
    Т.е. из текста рандомно выбирается N слов, и обрамляются тегами <b></b>
    Только необходимо регулярку нормальную написать.
     
    _________________________
    #18577 Expl0ited, 2 Jun 2011
    Last edited: 2 Jun 2011
  18. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    вот весь код
    PHP:
    <?PHP
    $filet 
    fopen("cookie.txt","w");    
    fwrite($filetNULL );    
    fclose($filet);   

    $randrand(804444430);   

    $cur=curl_init();   
    curl_setopt($cur,CURLOPT_URL,"http://spaces.ru/mysite/?name=Jss17&password=asdas");   
    curl_setopt($cur,CURLOPT_USERAGENT,"$rand");   
    curl_setopt($cur,CURLOPT_COOKIEJAR,"cookie.txt");   
    curl_setopt($cur,CURLOPT_COOKIEFILE,"cookie.txt");   
    curl_setopt($curCURLOPT_REFERER"http://site.at.ua");   
    curl_setopt($cur,CURLOPT_RETURNTRANSFER,1);   
     
    $doccurl_exec($cur);   
    curl_close($cur);   


    echo 
    $doc
     
    $strstr strstr($doc'не обнаружен'); 
    if (
    $strstr != FALSE

        echo 
    'Ошибка'
    }   

    ?>
    // Gifts: не используйте шорт-теги
     
  19. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    qaz Повторюсь, сохраните файл скрипта в кодировке UTF-8 без BOM - все будет работать
     
    _________________________
  20. volgovend

    volgovend New Member

    Joined:
    11 Nov 2009
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    помогите, напишите простейший пхп скрипт.

    юзер переходит по ссылке:
    xxx.ru/[email protected]

    и в txt, лежащий рядом, записываются в столбик эти [email protected]
     
Thread Status:
Not open for further replies.