За последние 24 часа нас посетили 18503 программиста и 1631 робот. Сейчас ищут 1078 программистов ...

Помогите спарсить код!

Тема в разделе "Регулярные выражения", создана пользователем kit, 3 апр 2014.

  1. kit

    kit Активный пользователь

    С нами с:
    18 дек 2006
    Сообщения:
    331
    Симпатии:
    1
    Адрес:
    местный
    Ребята! Часа полтора уже бьюсь, помогите вытащить 7,4
    из кода <a js-currency="137" js-type="-1" js-periods="0" href="javascript:void(0);">7,4</a>
    Это частный случай, а вообще таких строк много и надо вытащить все что между > и <
    в коде будут меяться 137, -1 и 0 (первый ноль).
    Спасибо за регулярку!
     
  2. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Код (PHP):
    1. $str='[url="javascript:void(0);"]7,4[/url]';
    2. $str=preg_replace('/<a[^>]*>(.*)<\/a>/i','\\1',$str);
    3. echo $str; //7,4 
     
  3. kit

    kit Активный пользователь

    С нами с:
    18 дек 2006
    Сообщения:
    331
    Симпатии:
    1
    Адрес:
    местный
    Your спасибо!
    Видимо я плохо описал задачу. Уточню. На странице огромная куча ссылок. Надо спарсить только ссылки в формате:
    <a js-currency="цифры" js-type="отрицательные или положительные цифры" js-periods="цифры" href="javascript:void(0);">извлекаемое значение</a>
    вот фрагмент кода:
    Код (Text):
    1. <td class="name"><div>Рубли</div></td>
    2.          
    3.         <td><div><a js-currency="137" js-type="-1" js-periods="0" href="javascript:void(0);">7,4</a>%</div></td>
    4.          
    5.         <td><div><span class="red"><span class="arr arr_down">&nbsp;</span><b><a js-currency="137" js-type="-1" js-periods="1" href="javascript:void(0);">7,5</a></b></span>%</div></td>
    6.          
    7.         <td><div><a js-currency="137" js-type="-1" js-periods="2" href="javascript:void(0);">8,1</a>%</div></td>
     
  4. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Код (PHP):
    1. $matches=array();
    2. preg_match_all('/<a.*js-currency="\d+"\sjs-type="-?\d+"\sjs-periods="\d+".*?>(.*?)<\/a>/i',$text,$matches);
    3. echo'<pre>';
    4. print_r($matches[1]);   
     
  5. Isaev

    Isaev Активный пользователь

    С нами с:
    17 июл 2013
    Сообщения:
    14
    Симпатии:
    0
    Доброго времени суток!
    Есть файлик:
    Код (Text):
    1. //class Cname
    2. package cname.vtables
    3. {
    4.     public class Cname extends Object
    5.     {
    6.         public function Cname()
    7.         {
    8.             super();
    9.             return;
    10.         }
    11.  
    12.         public static const Grimm:Array=[0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, 11, 11, 11, 12, 12, 12, 1];
    13.  
    14.         public static const Mant:Array=[2, 5, 8, 11 190, 193, 196, 199, 202, 205, 208, 211, 214, 217, 220, 223, 226, 229, 232, 235, 238, 241, 244, 247, 250, 316, 319, 322];
    Как проще считать первый массив в массив(значиний в нём на самом деле намного больше)?
    Нужна ли тут регулярка или может есть функция какая, чтобы строку значений в массив перегнать?
     
  6. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    /Grimm:Array=\[([^\]]+)\]/i
    далее то что вытащится разбить через explode(',',$str)
     
  7. Isaev

    Isaev Активный пользователь

    С нами с:
    17 июл 2013
    Сообщения:
    14
    Симпатии:
    0
    runcore, спс, '+' помог, что-то я забыл про него совсем)