Regular expression, help.

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • leonardo.calado@gmail.com

    Regular expression, help.

    Hi, I have the following text from database:

    {geo:countries: fr|br|us|es}
    Vivamus orci. Nunc eget risus adipiscing urna interdum tincidunt.
    Aenean nec felis condimentum nisi rhoncus tristique. Cras fringilla
    posuere nulla. Fusce eu justo.
    {/geo}

    {geo:countries: all}
    Proin ac sem. Praesent faucibus libero nec quam. Cras id neque. Mauris
    euismod eleifend elit. Mauris id sem. Donec odio.
    {/geo}

    {geo:countries: uk|jp|ch}
    Vestibulum viverra metus vel diam. Maecenas eu purus. Etiam fringilla
    eleifend libero.
    {/geo}

    I need split this information in array and show only content from
    listed country or all countries.

    I'm try using split()"http://www.php.net/split" function with regex,
    but I'm not success, I try, try and try... and nothing, I try using a
    pattern from regex.

    Anybody help me?

    Thanks for all.

  • Justin Koivisto

    #2
    Re: Regular expression, help.

    leonardo.calado @gmail.com wrote:[color=blue]
    > Hi, I have the following text from database:
    >
    > {geo:countries: fr|br|us|es}
    > Vivamus orci. Nunc eget risus adipiscing urna interdum tincidunt.
    > Aenean nec felis condimentum nisi rhoncus tristique. Cras fringilla
    > posuere nulla. Fusce eu justo.
    > {/geo}
    >
    > {geo:countries: all}
    > Proin ac sem. Praesent faucibus libero nec quam. Cras id neque. Mauris
    > euismod eleifend elit. Mauris id sem. Donec odio.
    > {/geo}
    >
    > {geo:countries: uk|jp|ch}
    > Vestibulum viverra metus vel diam. Maecenas eu purus. Etiam fringilla
    > eleifend libero.
    > {/geo}
    >
    > I need split this information in array and show only content from
    > listed country or all countries.
    >
    > I'm try using split()"http://www.php.net/split" function with regex,
    > but I'm not success, I try, try and try... and nothing, I try using a
    > pattern from regex.
    >
    > Anybody help me?
    >
    > Thanks for all.
    >[/color]

    <?php
    $text= '{geo:countries :fr|br|us|es}
    Vivamus orci. Nunc eget risus adipiscing urna interdum tincidunt.
    Aenean nec felis condimentum nisi rhoncus tristique. Cras fringilla
    posuere nulla. Fusce eu justo.
    {/geo}

    {geo:countries: all}
    Proin ac sem. Praesent faucibus libero nec quam. Cras id neque. Mauris
    euismod eleifend elit. Mauris id sem. Donec odio.
    {/geo}

    {geo:countries: uk|jp|ch}
    Vestibulum viverra metus vel diam. Maecenas eu purus. Etiam fringilla
    eleifend libero.
    {/geo}
    ';

    $geopat='`{geo\ :countries\:([^}]+)}(.*)(?={/geo}){/geo}`isU';
    $texts=array();
    if(preg_match_a ll($geopat,$tex t,$m)){
    $numMatches=cou nt($m[0]);
    for($i=0;$i<$nu mMatches;$i++){
    $countries=expl ode('|',$m[1][$i]);
    foreach($countr ies as $k){
    if(!isset($text s[$k])) $texts[$k]=array();
    $texts[$k][]=$m[2][$i];
    }
    }
    }

    print_r($texts) ;
    ?>

    HTH

    --
    Justin Koivisto, ZCE - justin@koivi.co m

    Comment

    • leonardo.calado@gmail.com

      #3
      Re: Regular expression, help.

      Thanks Justin, I will try.

      Comment

      Working...