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

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

Thread Status:
Not open for further replies.
  1. Dr.Frank

    Dr.Frank Elder - Старейшина

    Joined:
    31 Jul 2002
    Messages:
    301
    Likes Received:
    72
    Reputations:
    12
    Если строка в двойных ковычках, то в твоем случае даже не надо смотреть сочетание сивмолов \x, PHP сразу понимает, что эт один символ..
    PHP:
    <?php
    $str
    ='фвафіаafdjasdjfowej\x1e\x10s\\\asdf%&**()';
    echo
    "$str<br>";
    for(
    $i=0;$i<=strlen($str);)
     {
       if(
    $str[$i+1]=="x" && $str[$i]=="\\"){
         echo 
    substr($str,$i,4)."<br>";
         
    $i+=4;
       }else{
        echo
    "$str[$i]<br>";
        
    $i++;
      }
     }
    ?>
     
  2. Cond

    Cond Member

    Joined:
    28 May 2007
    Messages:
    13
    Likes Received:
    6
    Reputations:
    1
    У меня проблема в регулярных выражениях не могу сообразить как сделать чтобы все ячейки написанные ниже были помещены в массив :(
    В HTML таблице есть ячейки вида:
    Code:
    <td><center>news<br><a href='http://news.com/news/11/' class='news_11'><b>News</b></a><font color=black>news</font></center></td>
    <td><center>news<br><a href='http://news.com/news/11/' class='news_11'><b>News</b></a></center></td>
    <td><center>news<br><a href='http://news.com/news/11/' class='news_11'><b>News</b></a></center></td>
    <td><center>news<br><a href='http://news.com/news/11/' class='news_11'><b>News</b></a></center></td>
    <td><center>news<br><a href='http://news.com/news/11/' class='news_11'><b>News</b></a><font color=black>news</font></center></td>
    Там везде не просто везде News написано, а разная информация, естественно с буквами, цифрами, слэшами, пробелами, ентерами т.е выход делать регулярное выражение с тегами, а как именно сделать это регулярное выражение проблема :(, пробовал просто без помощи тегов делать не выходит.
    Нужно чтобы только такого вида ячейки были помещены в массив.
    Делаю так:
    $exp = '/<td><center>(.*?)<br><a href=(.*?)>(.*?)<\/a><font color=(.*?)>(.*?)<\/font><\/center><\/td>/';
    preg_match_all($exp, $str, $preg);
    Пробовал и по другому составлять $exp но так и не додумался :((
    В массив $preg заносятся только первая и последняя ячейки :(
    А нужно чтобы каждая ячейка так как она распаложена шла и в массив ...
    Т.е вариант типо сначало сделать $exp занести в массив потом сделать
    Code:
    $exp_2 = '/<td><center>(.*?)<br><a href=(.*?)>(.*?)<\/a><\/center><\/td>/';
    Занести в массив отпадает надо чтобы поочереди всё было :(
    Помогите разобраться плз как сделать :)
    Вроде как и пустиковое то дело, а мне совсем непонятно :(.
     
  3. grinay

    grinay IQ- 137%

    Joined:
    15 Jun 2004
    Messages:
    409
    Likes Received:
    174
    Reputations:
    305
    Стукни в асю 939455 помогу с регулркой.Просто не совсем вопрос понятен.
     
  4. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,325
    Likes Received:
    1,199
    Reputations:
    252
    Эм еси у тебя только первая и последняя, то прочитай внимательно про preg_match_all и его 4 парметром !
     
    #64 banned, 8 Jun 2007
    Last edited: 8 Jun 2007
  5. Cond

    Cond Member

    Joined:
    28 May 2007
    Messages:
    13
    Likes Received:
    6
    Reputations:
    1
    Code:
    <?php
    $data="<td><center>news<br><a href='http://news.com/news/11/' class='news_11'><b>News</b></a><font color=black>news</font></center></td>
    <td><center>news<br><a href='http://news.com/news/11/' class='news_11'><b>News</b></a></center></td>";
    
    $exp = '/<td><center>(.*?)<br><a href=(.*?)>(.*?)<\/a>(.*?)<\/center><\/td>/';
    preg_match_all($exp,$data,$math);
    print_r($math[0]);
    ?>
    Вот как всё решилось благодаря grinay! СПАСИБО ОГРОМНОЕ! Написал код за секунды :)
    А я мучился целый день как же не догодался сюда написать :) даже спать не хотел пока не узнаю как всё делается :)
    Теперь хоть и спать спокойно можно :).
     
    #65 Cond, 8 Jun 2007
    Last edited: 8 Jun 2007
  6. hhover

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

    Joined:
    21 May 2007
    Messages:
    60
    Likes Received:
    36
    Reputations:
    11
    Уже написал код, не заметил, что вопрос решен, но все же, в этой регулярке дополнительно парсить данные не нужно.
    Code:
    $exp = "/\<td\>\<center\>(.+?)\<br\>\<a\shref\=\'([^\']+?)\'[^\>]+?\>\<b\>(.+?)\<\/b\>\<\/a\>(\<font[^\>]*?\>(.+?)\<\/font\>)?\<\/center\>\<\/td\>/is
     
  7. _Great_

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

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,118
    Reputations:
    1,139
    Напомню, что в теме обсуждаются только вопросы, непосредственно связанные с ЯЗЫКОМ.
    Оффтоп буду тереть и жестоко наказывать.
     
  8. Cond

    Cond Member

    Joined:
    28 May 2007
    Messages:
    13
    Likes Received:
    6
    Reputations:
    1
    hhover спасибо по прошлой проблемке, но сделал уже как grinay подсказал, всё работает, а раз работает пусть работает как есть :) Но всё равно спасибо!
    Вот образовалась проблема не могу понять как решить :(
    Есть вот такая HTML форма:
    [​IMG]
    Туда вводятся числа в верхнюю строчку от 1 до 19 ,
    во 2-ую (нижнюю) строчку от 1 до 20.
    Нужно чтобы допустим ввожу я в первую строчку 2 во вторую 5 мне должно вывести куда-нибудь, например в файл result.txt вот такое вот:
    Code:
    12 
    13 
    14 
    15 
    23 
    24
    25 
    34 
    35 
    45
    Тоесть первая цифра 2 обозначает сколько всего должно быть цифр в каждой по две ...
    Вторая цифра 5 обозначает что из неё будут браться цифры вида 1 2 3 4 5 и делаться двухзначная цифра ...
    Надо чтобы цифры не повторялись например в цифрах выше нет цифр 11 22 33 44 55 Ещё если есть цифры 12, то 21 уже не надо. Если есть 23, то 32 не надо.
    Если было бы в HTML форме первая цифра 3 вторая 5, тогда не должно было бы быть цифр 111 222 333 444 555 1x1 2x2 3x3 4x4 5x5 x11 x22 x33 x44 x55 11x 22x 33x 44x 55x (где x - любая цифра)
    Вот что должно выводиться: 123 124 125 134 234 245 134 135 345 345

    Ещё если уже есть 123, то цифры 321 231 213 132 уже не должны быть.
    Как такое можно сделать? Помогите плз.
    Кто поможет готовым скриптом, тому с меня сайт с веб шеллом с правами записи в разные папки.
     
    #68 Cond, 9 Jun 2007
    Last edited: 9 Jun 2007
  9. Dr.Frank

    Dr.Frank Elder - Старейшина

    Joined:
    31 Jul 2002
    Messages:
    301
    Likes Received:
    72
    Reputations:
    12
    вот попробуй(параметры передаются через $f1 и $f2):

    PHP:
    <?php
    $file
    =fopen("result.txt","w");
    function 
    a($t,$z,$s){
      global 
    $f2,$f1,$file;
      for(
    $q=($t+1);$q<=$f2;$q++){
      if(
    $z<$f1)
        
    a($q,($z+1),$s.$q);
      else
        
    fwrite($file,$s.$q."\r\n");
      }
    }
    a(0,1,"");
    fclose($file);
    ?>
    Только я не догнал, почему у тебя второе число аж до 20? эт как? Цифр то всего 9(ну 10 с нулем, но он, как я понял, тебе не нужен).
     
    3 people like this.
  10. Cond

    Cond Member

    Joined:
    28 May 2007
    Messages:
    13
    Likes Received:
    6
    Reputations:
    1
    Допустим если $f1=2, а $f2=20,
    тогда уже будут задействованы числа и 11 и 12 и так до 20, а в целом да они и состоят все из цифр 0-9 :)
    Шелл в личке.
    Скрипт работает, огромное СПАСИБО! :)
     
  11. $Lemur$

    $Lemur$ Elder - Старейшина

    Joined:
    7 Jan 2007
    Messages:
    70
    Likes Received:
    15
    Reputations:
    0
    хочу написать скрипт для вытаскивания из больших спам листов определенного количества мыл по деапозону, тоесть от 0 до 50000, 50000 до 100000

    нашел вот такой пример:

    <?
    $file = fopen("c:/www/html/file.txt","r");
    if(!file)
    {
    echo("Ошибка открытия файла");
    }
    else
    {
    $buff = fread ($file,100);
    print $buff;
    }
    ?>

    как сделать чтобы он считал строки по диапозону и выводил результат не встроку а в столбец или пробел заменялся переносом на новую строку :rolleyes:
     
  12. GoreMaster

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

    Joined:
    28 May 2007
    Messages:
    119
    Likes Received:
    32
    Reputations:
    4
    А не подойдет ли это:
    PHP:
    $mail_list file("c:/www/html/file.txt","r");
    for(
    $i=0;$i 50000$i++){
    echo 
    "$mail_list[$i] <br>";
     
    #72 GoreMaster, 11 Jun 2007
    Last edited: 11 Jun 2007
  13. Dr.Frank

    Dr.Frank Elder - Старейшина

    Joined:
    31 Jul 2002
    Messages:
    301
    Likes Received:
    72
    Reputations:
    12
    Почти.., только
    PHP:
    $mail_list file("file.txt");
    for(
    $i=$number;$i < ($number+50000); $i++){
    echo 
    "{$mail_list[$i]} <br/>\r\n";
    $number - переменная(номер), начиная с которого читаются E-mail
     
    1 person likes this.
  14. }{0TT@БЬ)Ч

    }{0TT@БЬ)Ч Elder - Старейшина

    Joined:
    20 Jan 2006
    Messages:
    269
    Likes Received:
    139
    Reputations:
    31
    вот вытащил из скрипта
    fsockopen($hostname,80,$errnum,$errstr,20)
    и не пойму за что отвечает пременные $errnum,$errstr и почему именно 20?
     
  15. Joker-jar

    Joker-jar Elder - Старейшина

    Joined:
    11 Mar 2007
    Messages:
    581
    Likes Received:
    205
    Reputations:
    37
    Есть функция, генерирующая строку заданной длины из заданного символа?
     
  16. Fire3d

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

    Joined:
    14 Apr 2007
    Messages:
    47
    Likes Received:
    6
    Reputations:
    0
    <?
    $i=1;
    while($i<15){
    echo $i ."<br>";
    $i++;
    }
    ?>
    Обьясните что означает выделеное жирным.
     
  17. Fire3d

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

    Joined:
    14 Apr 2007
    Messages:
    47
    Likes Received:
    6
    Reputations:
    0
    Но просто ели убрать точку то скрипт не выполнится((( Что обозначает точка ? Извените за ламерские вопросы но я недавно пхп начал изучать и по ходу обучение от вопросов не куда не дется (
     
    1 person likes this.
  18. }{0TT@БЬ)Ч

    }{0TT@БЬ)Ч Elder - Старейшина

    Joined:
    20 Jan 2006
    Messages:
    269
    Likes Received:
    139
    Reputations:
    31
    2Fire3d
    <?
    $a = "100";
    $b = "200";
    echo $a + $b ."\n"; //выведет "300"
    echo $a . $b; //выведет "100200"
    ?>
    вот глянь взял из книги ;)
     
    #78 }{0TT@БЬ)Ч, 11 Jun 2007
    Last edited: 11 Jun 2007
  19. $Lemur$

    $Lemur$ Elder - Старейшина

    Joined:
    7 Jan 2007
    Messages:
    70
    Likes Received:
    15
    Reputations:
    0
    PHP:
    <?
      
    $file file("file.txt");
      
    $start 0;
      
    $end 1000;
      if(!
    $file)
      {
        echo(
    "Ошибка открытия файла");
      }
      else
      {
         for(
    $i=$start;$i < ($start+$end); $i++) 
         {
          
    printf("%s<br>"$file[$i]);
        }
      }
    ?>
    сделал вот так спасибо :D
     
    #79 $Lemur$, 11 Jun 2007
    Last edited: 11 Jun 2007
  20. GoreMaster

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

    Joined:
    28 May 2007
    Messages:
    119
    Likes Received:
    32
    Reputations:
    4
    функция file("filename") считывает содержимое в файла в массив (=.
    У тебя лист разбит на строки или просто список в файле через пробел?
     
    1 person likes this.
Loading...
Thread Status:
Not open for further replies.