Регулярные выражения

Тема в разделе "Как сделать...", создана пользователем TopReseller, 11 июн 2014.

  1. TopReseller

    TopReseller

    Регистр.:
    30 июл 2011
    Сообщения:
    322
    Симпатии:
    113
    Ребят, нужна помощь.
    Нужно заменить весь текст в html на слово ТЕКСТ
    оставив все остальные теги и классы и прочие атрибуты
    Возможно это сделать регуляркой?
     
  2. justman32

    justman32 Постоялец

    Регистр.:
    29 авг 2008
    Сообщения:
    50
    Симпатии:
    5
    А есть какой-то пример html-а, чтоб посмотреть какие там вообще теги есть и как расположен контент внутри тегов?
     
  3. TopReseller

    TopReseller

    Регистр.:
    30 июл 2011
    Сообщения:
    322
    Симпатии:
    113
    Нужен универсальный, можно взять хоть код данной страницы
     
  4. DevOrc

    DevOrc Создатель

    Регистр.:
    5 июн 2014
    Сообщения:
    31
    Симпатии:
    10
    Заменяет на TEXT содержимое тегов за исключением указанных.
    Код:
    <?
    $text=<<<EOF
    <html>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <link/>
    <title>Sample</title>
    </head>
    <body>
    <h1 class="zzz">Note</h1>
    <p>
    This page is sample
    </p>
    </body> 
    </html>
    EOF;
    
    $notreplaced=array('meta','title','link','javascript');
    preg_match_all('~<([^/>]+)>([^>]+)<\/[^>]+>~U',$text,$out,PREG_SET_ORDER);
    foreach($out as $k=>$v)    if(!in_array($v[1],$notreplaced)) $text=str_replace($v[2],'TEXT',$text);
    echo $text;
    ?>
    
     
    TopReseller нравится это.
  5. Festem

    Festem Постоялец

    Регистр.:
    4 сен 2014
    Сообщения:
    97
    Симпатии:
    26
    Помогите с шаблоном регулярки под preg_match_all. Надо подсчитать количество неактивных ссылок в тексте (т.е. a href) нету - только
    Код:
    http://...... https://.....
    , но не учитывать те в которых упомянут определенный домен .т.е например все неактивные ссылки кроме yandex.ru Если бы не это условие, то можно было бы просто посчитать число вхождение http и https, а так - я что-то не могу сориентироваться
     
  6. _sokal_

    _sokal_

    Регистр.:
    25 дек 2009
    Сообщения:
    300
    Симпатии:
    140
    PHP:
    preg_match_all('|http://(?!yandex.ru).*? |'$q$matches);
     
    Festem нравится это.
  7. Festem

    Festem Постоялец

    Регистр.:
    4 сен 2014
    Сообщения:
    97
    Симпатии:
    26
    Спасибо, но не совсем корректно работает. Смотрите, вот есть пример кода (от фонаря) с набором ссылок

    Код:
    $text="Развозные грузовики — это самые массовые, компактные и лёгкие грузовые автомобили, как правило, с пониженной погрузочной высотой. Большая часть выпускаемых в мире лёгких грузовиков и фургонов относится к классу N1, то есть их полная масса не должна превышать 3,5 т (в США — до 4,54 т), а грузоподъёмность, составляет до 1,5—1,8 т. Часто грузовики такого типа оснащают цельнометаллическим кузовом типа фургон вагонной или полукапотной компоновки со сдвижными боковыми дверями грузового отсека и распашными задними. Кстати, именно на базе таких фургонов выполнено большинство современных моделей автобусов особо малого класса (M1 и М2), называемых также микроавтобусами.<br />
    <br />
    
    http://google.com
    
    Американская разновидность развозных фургонов (преимущественно почтовых) со сдвижными дверями водительской кабины и увеличенной высотой кузова, приспособленных для быстрого входа-выхода экспедитора называется мультистоп.<br />
    <br />
    
    http://mail.ru
    <br />
    
    
    Другим распространённым подвидом развозных грузовиков являются пикапы (от англ. pick-up — подбирать), представляющие собой либо модификацию легкового http://mail.ru автомобиля с открытой однобортовой грузовой платформой вместо задней части кузова (ныне распространены преимущественно в Европе), либо специально разработанную модель с шасси рамного типа (Северная и Южная Америки и страны Азии) и кабиной различной вместимости: http://yandex.ru от одинарной 2-3-местной до сдвоенной 5-6-местной. https://google.com В последней четверти XX века именно пикапы, ранее популярные преимущественно среди фермеров стали бестселлерами североамериканского автомобильного рынка (ежегодные продажи только одной модели Ford F-серии превышают 1 млн в год) http://google.com и в силу прожорливости своих многоцилиндровых (V8 и V10) бензиновых двигателей (дизели на грузовых автомобилях 1—3 http://yandex.ru классов грузоподъемности в США мало распространены) спровоцировали повышение https://yandex.ru нефтяных цен в 2000-е годы. В то же время подавляющую часть европейских и азиатских развозных грузовиков оснащают экономичными дизельными двигателями. В России развозные грузовики, фургоны и пикапы производят предприятия ГАЗ (семейства Соболь и Газель), УАЗ, «ИжАвто» и «ВАЗинтерСервис». http://yandex.ua";
    
    preg_match_all('|http://(?!yandex.ru).*? |', $text, $out);
    
    print_r($out);
    Результат работы

    Код:
    Array
    (
        [0] => Array
            (
                [0] => http://mail.ru
                [1] => http://google.com
            )
    
    )
    Т.е. не все учлось. И нету проверки на https :(
     
  8. Hannibal86

    Hannibal86 Создатель

    Регистр.:
    17 сен 2014
    Сообщения:
    37
    Симпатии:
    17
    По правилу - последний урл не засчитался, потому что после него нету пробела, что символизирует окончание ссылки. А https не так сложно сделать

    Код:
    preg_match_all('#(http|https)://(?!yandex.ru).*? #s', $text, $out);
    
     
    latteo и Festem нравится это.