[Регулярки & Mod_Rewrite] Задай вопрос, получи ответ.

Discussion in 'PHP' started by .:EnoT:., 19 Nov 2008.

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

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

    Joined:
    29 Jul 2009
    Messages:
    801
    Likes Received:
    145
    Reputations:
    73
    Ну так открывай файл через file(); в цикле каждую строку проверяй условием, кот. я привел.
    Например:
    PHP:
    <?php 
    $file_arr 
    file("text.txt"); 
    foreach(
    $file_arr as $line) {
    strlen($line) <= 10 $line '' '' ;
    echo 
    $line."<br>";
    }
    ?>
    Скрипт выведет текстовый файл исключая сроки меньше или равные 10 симвалам.
    в условии можно переделать на проверку условием и записем в файл, тоесть запишется новый файл, где не будет "маленьких" строк.
    Возможно есть и более практичный вариант.

    PS. Написал на скорую руку, нужно доделать до нормального вывода и вырезания "строки"
     
    #821 LStr1ke, 12 Dec 2009
    Last edited: 12 Dec 2009
    1 person likes this.
  2. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,170
    Likes Received:
    1,155
    Reputations:
    202
    Вообще с трудом понял суть проблемы, а что если считать файл побайтово в переменную, далее переменную разбить на Строки
    $strings = explode("\r\n", $file);
    Далее сделать поиск в кадом ключе $strings[0], [1], [2]... искать кол-во символов "\n" если оно меньше 10, то делать unset($strings[$key]);
    Потом склеиваем оставшиеся ключи и перезаписываем файл.

    Надеюсь правильно понял суть вопроса =)
     
  3. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    чото хитромудрая надуманность какая-то, вот так вот и пох на размеры файла:

    PHP:
    <?php
    $a 
    fopen('123.txt','r');
    while (!
    feof($a)) {
       
    $b trim(fgets($a));
       if (
    strlen($b)>10) echo $b "<br>";
    }
    ?>
    Причем здесь регулярки - искренне не понял. Или залей куда-нибудь пример такого файла
     
    1 person likes this.
  4. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    Бред, имхо

    PS: Сорри, но правда бред

    ни одна регулярка не будет работать быстрее while и strlen, имхо в квадрате

    Тем более с большим файлом
     
    #824 Pashkela, 12 Dec 2009
    Last edited: 12 Dec 2009
  5. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    понял, может это наведет на подсказку:

    PHP:
    <?php
    $a 
    fopen('123.txt','r');
    while (!
    feof($a)) {
       
    $b trim(fgets($a));
       if (
    preg_match('#.{10}#',$b)) echo $b "<br>";
    }
    ?>
    где в 123.txt - твой текст
     
  6. LStr1ke

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

    Joined:
    29 Jul 2009
    Messages:
    801
    Likes Received:
    145
    Reputations:
    73
    PHP:
    $string "\n".$string."\n";
    $out preg_replace("#\n(.{1,10})\n#","\n",$string);
    echo 
    $out;
     
  7. PaCo

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

    Joined:
    6 Feb 2008
    Messages:
    436
    Likes Received:
    138
    Reputations:
    25
    Не знаю но как в путоне с кавычками - '\n' и "\n" разные вещи или нет? Или в regexp это учитывается?
     
  8. LStr1ke

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

    Joined:
    29 Jul 2009
    Messages:
    801
    Likes Received:
    145
    Reputations:
    73
    '\n' - строка \n
    "\n" - перенос строки
    а в шаблоне если ищещь строку \n, то экранируешь ее. /\n
     
  9. PaCo

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

    Joined:
    6 Feb 2008
    Messages:
    436
    Likes Received:
    138
    Reputations:
    25
    спасибо конечно но я не про php и это как бы подсказка rushter.
     
  10. LStr1ke

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

    Joined:
    29 Jul 2009
    Messages:
    801
    Likes Received:
    145
    Reputations:
    73
    rushter
    Я не пойму, тогда в чем проблема? Если твоя регулярка работает, то к чему тема?
    Твоя регулярка ищет количество имволов между "\n" и "\n", если и работает, то. Первую строку он не распознает, т.к. она начальная и перед нею нету знака переноса строки, что соответсвенно и с конечной строкой.
     
  11. LStr1ke

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

    Joined:
    29 Jul 2009
    Messages:
    801
    Likes Received:
    145
    Reputations:
    73
    хммм =\
    Вообщем такая тема, если было 2 строки меньше 20 символов одна - за другой, то вырезается только одна. Видимо замена на \n мешает сразу вырезать сл. строку.
    Тоесть если между этими строками вставить еще одну больше 20 символов, то в один раз все вырезается.
    Например:
    PHP:
    $out preg_replace("#\n(.{1,20})\n#","\n",$string); 
    $out preg_replace("#\n(.{1,20})\n#","\n",$out); 
    Успешно вырежет оставшуюся (забытую) строку.

    Но если их будет больше 2х подряд, то проблема. Вообщем нужен или цикл, каждый раз проверя еслть ли там строки меньше 20 символов, либо думать над шаблоном
     
  12. foxxx1234

    foxxx1234 Member

    Joined:
    26 Nov 2008
    Messages:
    0
    Likes Received:
    7
    Reputations:
    0
    Location: /id12345677
    Подскажите как написать чтобы выводились только цифры
     
  13. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    PHP:
    <?php
    $a 
    "Location: /id12345677";
    preg_match('#\d+#',$a,$res);
    echo 
    $res[0];
    ?>
     
  14. foxxx1234

    foxxx1234 Member

    Joined:
    26 Nov 2008
    Messages:
    0
    Likes Received:
    7
    Reputations:
    0
    Спасибо большое.
     
  15. foxxx1234

    foxxx1234 Member

    Joined:
    26 Nov 2008
    Messages:
    0
    Likes Received:
    7
    Reputations:
    0
    Что то не получается вытащить цифры после Location: /id
    PHP:
    HTTP/1.1 302 Found
    Server
    nginx/0.7.59
    Date
    Mon14 Dec 2009 11:17:46 GMT
    Content
    -Typetext/htmlcharset=windows-1251
    Connection
    close
    X
    -Powered-ByPHP/5.2.6-1+lenny3
    Pragma
    no-cache
    Cache
    -controlno-store
    Set
    -Cookieremixchk=5expires=Thu09-Dec-2010 05:38:21 GMTpath=/; domain=.vkontakte.ru
    Set
    -Cookieremixsid=c54f572c56461cef2bc77daf110a3a2c16bc62f49f31bb800bf161aexpires=Thu09-Dec-2010 10:36:40 GMTpath=/; domain=.vkontakte.ru
    Location
    : /id12345678
    Vary
    Accept-Encoding
    Content
    -Length0

    HTTP
    /1.1 200 OK
    Server
    nginx/0.7.59
    Date
    Mon14 Dec 2009 11:17:50 GMT
    Content
    -Typetext/htmlcharset=windows-1251
    Transfer
    -Encodingchunked
    Connection
    keep-alive
    X
    -Powered-ByPHP/5.2.6-1+lenny3
    Pragma
    no-cache
    Cache
    -controlno-store
    Vary
    Accept-Encoding
    Подскажите кто может.
     
  16. whexp

    whexp Member

    Joined:
    30 Nov 2009
    Messages:
    88
    Likes Received:
    29
    Reputations:
    5
    foxxx1234,
    Code:
    Location: /id(\d+)\n
     
  17. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    PHP:
    preg_match ('#Location:\s+/id(\d+)\r\n#'$str$m);
    echo 
    $m[1];
     
    1 person likes this.
  18. alwex

    alwex New Member

    Joined:
    14 Dec 2008
    Messages:
    137
    Likes Received:
    4
    Reputations:
    2
    у меня есть текст
    Code:
    <a href="" class="tracknews">*ТЕКСТ*</a>
    и надо заменивать что бы остался только *ТЕКСТ*, сам шаблон статический кроме слова *ТЕКСТ*. я написал регулярку только она его не хочет доставать:

    Code:
    $txt = preg_replace('#<a href="" class="tracknews">.+?</a>#si', '\\1', $txt);
     
  19. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,170
    Likes Received:
    1,155
    Reputations:
    202
    PHP:
    <?php
    $txt 
    '<a href="" class="tracknews">*ТЕКСТ*</a>';
    $txt preg_replace('#<a href="" class="tracknews">(.*)</a>#','$1',$txt);    
    echo 
    $txt;
    ?>
     
  20. alwex

    alwex New Member

    Joined:
    14 Dec 2008
    Messages:
    137
    Likes Received:
    4
    Reputations:
    2
    не то, оставляет </a>
     
Thread Status:
Not open for further replies.