User Tag List

Ցույց են տրվում 1 համարից մինչև 15 համարի արդյունքները՝ ընդհանուր 15 հատից

Թեմա: Regular Expressions+PHP

  1. #1
    Անդամության թեկնածու
    Գրանցման ամսաթիվ
    15.07.2006
    Գրառումներ
    2
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Regular Expressions+PHP

    Guys whats wrong with this expression it must delete from a string all data between tags and tags too

    function stripTags($tag, $string) {

    $regExp = '<" . "$tag" . "[^>]*>([\x20-\x7E]* | [ \t\r\n\v\f]*)*<\\" . "$tag" . "[^>]*';
    $string = ereg_replace($regExp, "", $string);

    return $string;
    }

    Մոդերատորական: Դար ակումբում գրառումների լեզուն հայերենն է: Օտարալեզու գրառումներն արգելվում են:
    Վերջին խմբագրող՝ Philosopher: 02.10.2007, 11:20:

  2. #2
    Պատվավոր անդամ քաղաքացի-ի ավատար
    Գրանցման ամսաթիվ
    27.03.2006
    Տարիք
    41
    Գրառումներ
    2,030
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re. Regular Expressions+PHP

    Բարև, խնդրում եմ անգլերեն մի գրեք, այստեղ հայկական ֆորում է, բայց մենք կփորձենք քեզ օգնել
    PHP կոդ:
    function stripTags($tag$string) {

    $regExp "<" $tag "[^>]*>(.*?)</" $tag "[^>]*";
    $string ereg_replace("%".$regExp."%/si"""$string);

    return 
    $string;

    Այ սենց պետք է աշխատի: Նախ ասեմ, որ կոդդ շատ վատ է գրած: Սկսում ես « ' »-ով հետ շարունակում ես « " »-ով: Սա շատ վատ գրելաձև է, և կարող ես լիքը կոնֆլիկտների առաջ կանգնել:

  3. #3
    Հայաստան! Egern.net-ի ավատար
    Գրանցման ամսաթիվ
    23.03.2006
    Հասցե
    Երևանյան լճի հարևանությամբ
    Տարիք
    34
    Գրառումներ
    1,091
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re. Regular Expressions+PHP

    Քաղաքացի ջան, խնդրում եմ բացատրես regexp-իդ վերջին մասը.

    "</" . $tag . "[^>]*"

    ստացվում է, որ փակվող տեգում կարող են ուրիշ սիմվոլներ լինե՞ն, ասենք` ատրիբուտներ: Դա բացվող տեգում հասկանալի է, բայց փակվողում...

    մեկ էլ, ամենավերջին > նշանը չկա

    Ավելացվել է 11 րոպե անց
    ու մի հարց. / նշանից առաջ պետք չի՞ \ դնել (preg_replace-ում պարտադիր է)
    Վերջին խմբագրող՝ Egern.net: 02.10.2007, 12:10: Պատճառ: Գրառման ավելացում

  4. #4
    Պատվավոր անդամ քաղաքացի-ի ավատար
    Գրանցման ամսաթիվ
    27.03.2006
    Տարիք
    41
    Գրառումներ
    2,030
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re. Regular Expressions+PHP

    Մեջբերում Egern.net-ի խոսքերից Նայել գրառումը
    Քաղաքացի ջան, խնդրում եմ բացատրես regexp-իդ վերջին մասը.

    "</" . $tag . "[^>]*"

    ստացվում է, որ փակվող տեգում կարող են ուրիշ սիմվոլներ լինե՞ն, ասենք` ատրիբուտներ: Դա բացվող տեգում հասկանալի է, բայց փակվողում...

    մեկ էլ, ամենավերջին > նշանը չկա

    Ավելացվել է 11 րոպե անց
    ու մի հարց. / նշանից առաջ պետք չի՞ \ դնել (preg_replace-ում պարտադիր է)
    Ճիշտ ես ասում, ուղղակի վռազ էի, երկար չէի կարող կոդը նայել: Համենայն դեպս դժվար չի, ես շատ եմ անում:
    Այ օրինակ ես հիմա ուրիշ պրոբլեմի վրա եմ, ահագին դժվար խնդիր է, միքիչ հետո կտեղադրեմ, փորձենք քննարկել:

  5. #5
    Հայաստան! Egern.net-ի ավատար
    Գրանցման ամսաթիվ
    23.03.2006
    Հասցե
    Երևանյան լճի հարևանությամբ
    Տարիք
    34
    Գրառումներ
    1,091
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re. Regular Expressions+PHP

    շատ հետաքրքիր կլինի

  6. #6
    Պատվավոր անդամ քաղաքացի-ի ավատար
    Գրանցման ամսաթիվ
    27.03.2006
    Տարիք
    41
    Գրառումներ
    2,030
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re. Regular Expressions+PHP

    Դե լավ, որ հետաքրքիր ա, ասեմ:
    Ուրեմն խնդիրը հետևյալն է: Ունեմ HTML-ից մի հատված, ես ուզում եմ գտնեմ մի հատ DIV-ի innerHTML-ն: Ենթադրեն այդ DIV-ի id="aaa" և ես ուզում եմ դրա մեջինը:
    HTML կոդ:
    <html>
       <head>
          <title>asdfasdf</title>
       </head>
    <body>
       <div id="id1">
          asdfasdfdf
       </div>
       <div id="aaa">
          asdfasdf
          <div>sdgfasdfg</div>
          aasdf
       </div>
       <div id="id2">asdfasdf</div>
    </body>
    </html>
    Հիմա ինձ պետք է այն DIV-ի մեջինը որի id="aaa" և ներառյալ մեջի եղած մյուս DIV-երը:
    Բավականին տանջվել եմ:

  7. #7
    Հայաստան! Egern.net-ի ավատար
    Գրանցման ամսաթիվ
    23.03.2006
    Հասցե
    Երևանյան լճի հարևանությամբ
    Տարիք
    34
    Գրառումներ
    1,091
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re. Regular Expressions+PHP

    սա իրոք բարդ է... հեսա մի քիչ մտածեմ...

  8. #8
    Հայաստան! Egern.net-ի ավատար
    Գրանցման ամսաթիվ
    23.03.2006
    Հասցե
    Երևանյան լճի հարևանությամբ
    Տարիք
    34
    Գրառումներ
    1,091
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re. Regular Expressions+PHP

    PHP կոդ:
    $a '([\s\S](?!\/div)(?!div))*'//vor nerqev@ nuin ban@ 4 angam chgrem
    $re '/<div.+id=\"aaa\".*>('.$a.'(<div'.$a.'>'.$a.'<\/div>)*'.$a.')<\/div>/';
    preg_match_all($re$str$arr);
    print_r($arr[1]); 
    ինչ-որ բան ստացվեց: Այսինքն, քո տված օրինակով, ու իմ ստեղծած մի քանի օրինակներով աշխատեց: Բայց չեմ կարողանում հասկանալ, թե ինչի (?!.....)-ի մեջ չեմ կարողանում դնել < նշանը: Ու էդ պատճառով, եթե հանկարծ տեքստի մեջ հանդիպի div բառը, կոդը չի աշխատի....

    Ավելացվել է 10 րոպե անց
    մի հատ էլ ուղղում.
    PHP կոդ:
    $re '/<div.+id=\"aaa\".*>('.$a.'(<div'.$a.'>'.$a.'<\/div>'.$a.')*'.$a.')<\/div>/'
    որպեսզի եթե լինեն մեկից ավելի ներքին div-եր ու նրանց արանքում ուրիշ տեքստ, էլի աշխատի
    Վերջին խմբագրող՝ Egern.net: 02.10.2007, 21:54: Պատճառ: Գրառման ավելացում

  9. #9
    Պատվավոր անդամ քաղաքացի-ի ավատար
    Գրանցման ամսաթիվ
    27.03.2006
    Տարիք
    41
    Գրառումներ
    2,030
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re. Regular Expressions+PHP

    Հմմ… Հետաքրքիր է, հիմա կփորձեմ: Մինջ այդ ցույց տամ իմ գրածը, բայց չվախենաք
    PHP կոդ:
    <?php
    $i
    =1;
    while (
    1)
    {
        
    $regex='%<div id="print_content">?(.*?(<div[^>]*>)?.*?</div>){0,'.$i.'}%si';
        
    preg_match_all($regex,$subject,$out);
        
    $i substr_count($out[0][0],"<div");
        
    $k substr_count($out[0][0],"</div");
        if(
    $k==$i)break;
    }
    echo 
    $out[0][0];
    ?>

  10. #10
    Հայաստան! Egern.net-ի ավատար
    Գրանցման ամսաթիվ
    23.03.2006
    Հասցե
    Երևանյան լճի հարևանությամբ
    Տարիք
    34
    Գրառումներ
    1,091
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re. Regular Expressions+PHP

    վաաախ... էս ինչքան ես խորացել....

    բայց աշխատո՞ւմ է, ինչ որ չեմ հասկանում, թե ոնց ա "հավաքվում" html-ը, թե՞ միանգամից ա ստացվում... չէ, քնելուս ժամն ա....

  11. #11
    Պատվավոր անդամ Universe-ի ավատար
    Գրանցման ամսաթիվ
    09.04.2007
    Գրառումներ
    2,294
    Բլոգի գրառումներ
    6
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re. Regular Expressions+PHP

    Քաղաքացի ջան, կներես, մի հատ հարց տամ.
    PHP կոդ:
    <?php 
    $i
    =1
    while (
    1

        
    $regex='%<div id="print_content">?(.*?(<div[^>]*>)?.*?</div>){0,'.$i.'}%si'
        
    preg_match_all($regex,$subject,$out); 
        
    $i substr_count($out[0][0],"<div"); 
        
    $k substr_count($out[0][0],"</div"); 
        if(
    $k==$i)break; 

    echo 
    $out[0][0]; 
    ?>
    Ինչի՞ համարա այստեղ $i -փոփոխականին արժեք տվա՞ծ...
    Եւ եթե խնդրեմ չե՞ք բացատրի մեկնումեկդ, թե այս կոդում որը ինչ է նշանակում, եւ ինչի համար է ...))

  12. #12
    Պատվավոր անդամ քաղաքացի-ի ավատար
    Գրանցման ամսաթիվ
    27.03.2006
    Տարիք
    41
    Գրառումներ
    2,030
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re. Regular Expressions+PHP

    Բարլուս ձեզ: Կակռազ միքիչ զարթուն եմ
    Ուրեմն $i փոփոխականին սկզբում տված է 1՝ $i=1;
    while(1)-ը նշանակում է, անվերջ ցիկլ:
    $regex` այստեղ առաջին հերթին գտնում է, <div id="print_content'> tag-ը: Հետո նայում է ուրիշ բացվող <div> tag-ի համար, որը կարող է չլինել և լինել անթիվ անգամ: Վերջում փակվում է </div>: { 0, $i } մասում, ես նրան ասում եմ, որ այն կրկնվի՝ այսինքն </div>-ը կրկնվի 0-ից $i անգամ:
    Փաստորեն գտնում եմ առաջին փակվող div-ը:
    $i = այդ հատվածում բացվող div-երի քանակը:
    $k = այդ հատվածում փակվող div-երի քանակը:
    Ցիկլը կավարդի այն դեպքում, երբ $k հավասարվի $iժ-ին, այսինքն երբ փակվող ու բացվող div-երը իրար հավասար են:

    Հ.Գ. Գիտեմ շատ զզվելի կոդ է

    Հ.Հ.Գ. Egern.net կներես բայց դեռ չեմ նայել քո գրածը ու էլի թարս ժամանակ ա, հես գնամ գործի, նայեմ

  13. #13
    Հայաստան! Egern.net-ի ավատար
    Գրանցման ամսաթիվ
    23.03.2006
    Հասցե
    Երևանյան լճի հարևանությամբ
    Տարիք
    34
    Գրառումներ
    1,091
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re. Regular Expressions+PHP

    Այսինքն անընդհատ նույն արտահայտությունը նույն regexp-ով անցնում է, մինչև բոլոր ներքին դիվերը հաշվվեն.... .... երևի...

    բայց վերջում echo $out[0][0]; նշանակում է, որ ոչ թե մեջինն է վերադարձնում, այլ ամբողջ div-ը: Տե՞նց էր պետք: Իմ գրածը innerHTML-ն է վերադարձնում

  14. #14
    Պատվավոր անդամ քաղաքացի-ի ավատար
    Գրանցման ամսաթիվ
    27.03.2006
    Տարիք
    41
    Գրառումներ
    2,030
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re. Regular Expressions+PHP

    Egern.net բայց քո գրածը ինչ-որ լավ չի աշխատում: Հենց օրինակ իմ տված օրինակի համար, սխալ է աշխատում: Վարձնում է, առաջին բացվող div-ից վերջին փակվող div-ը:
    Երևի մի բան սխալ ես գրել

  15. #15
    Հայաստան! Egern.net-ի ավատար
    Գրանցման ամսաթիվ
    23.03.2006
    Հասցե
    Երևանյան լճի հարևանությամբ
    Տարիք
    34
    Գրառումներ
    1,091
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re. Regular Expressions+PHP


    PHP կոդ:
    <?php
    header
    ("Content-type:text/plain");
    $str '
    <html>
       <head>
          <title>asdfasdf</title>
       </head>
    <body>
       <div id="id1">
          id1
       </div>
       <div id="aaa">
          aaa1
          <div id="asa" st=s>bbb</div>
          ss
          <div id="as" st=s>bbb</div>
          aaa2
       </div>
       <div id="id2">asdfasdf</div>
    </body>
    </html>
    '
    ;
    $a '([\s\S](?!\/div)(?!div))*'//vor nerqev@ nuin ban@ 4 angam chgrem
    $re '/<div.+id=\"aaa\".*>('.$a.'(<div'.$a.'>'.$a.'<\/div>'.$a.')*'.$a.')<\/div>/';
    preg_match_all($re$str$arr);
    print_r($arr[1]);
    ?>
    ինձ մոտ նորմալ է, բացի իմ նշած դեպքից

Թեմայի մասին

Այս թեման նայող անդամներ

Այս պահին թեմայում են 1 հոգի. (0 անդամ և 1 հյուր)

Էջանիշներ

Էջանիշներ

Ձեր իրավունքները բաժնում

  • Դուք չեք կարող նոր թեմաներ ստեղծել
  • Դուք չեք կարող պատասխանել
  • Դուք չեք կարող կցորդներ տեղադրել
  • Դուք չեք կարող խմբագրել ձեր գրառումները
  •