Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: удалить из html тег <a>, если...
 
 автор: crus   (25.05.2011 в 16:52)   письмо автору
 
 

удалить из html теги с <a.... по</a>, если их идет более 4+ подряд и между закрывающим и открывающим тегом менее 40 символов.

<a href="1">one</a> | 
<a href="2">two</a> | here text | 
<a href="3">three</a> | 
<a href="4">four</a>remove this! <a href="5">four</a> | 
<a href="6">four</a>

нужно вырезать облака тегов. то есть, если ссылка в тексте - она остается, а если это ссылочный блок - вырезаем...

возможно ли такое при помощи регулярок?
у меня что-то не очень получается...

  Ответить  
 
 автор: Старший товарищ   (26.05.2011 в 13:58)   письмо автору
 
   для: crus   (25.05.2011 в 16:52)
 

Накидал тут вариантик....


<form action="" method="post">
    <p>Максимальная длинна в ссылке<input type="text" name="text_size" /></p>
    <p>Число ссылок идущих подряд<input type="text" name="order" /></p>
    <p>Исходный текст</p>
    <textarea name="txt"></textarea>
    <input type="submit">
</form>

<?
function cleen_clouds  ($text_size$order$input)
{
    
$size_input strlen($input);
    
$pattern "#<a(.*)>(.*)</a>(.*)#siU";
    
$pattern2 "#</a>(.*)<a#siU";
    
$clear_cloud = array();
    
$count 0;    
    for (
$i=0$i $size_input$i=strlen($rez[0][0])+$rez[0][1])
    {
        
preg_match ($pattern$input$rezPREG_OFFSET_CAPTUREstrlen($rez[0][0])+$rez[0][1]);
        
preg_match ($pattern2$input$rez2PREG_OFFSET_CAPTUREstrlen($rez2[0][0])+$rez2[0][1]);

        if (!empty(
$rez2[1][0]))
            
$count++;
        else 
            
$count 0;
            
        if ((
strlen($rez[0][0]) <= $text_size) and ($count <= $order))
            
$clear_cloud[]=$rez[0][0];
    }
    return 
$clear_cloud;
}
echo 
'<pre>'print_r (cleen_clouds($_POST['text_size'], $_POST['order'], $_POST['txt'])); echo '</pre>';

?>


Если чё, допилите.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования