|
|
|
| удалить из 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>
|
нужно вырезать облака тегов. то есть, если ссылка в тексте - она остается, а если это ссылочный блок - вырезаем...
возможно ли такое при помощи регулярок?
у меня что-то не очень получается... | |
|
|
|
|
|
|
|
для: 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, $rez, PREG_OFFSET_CAPTURE, strlen($rez[0][0])+$rez[0][1]);
preg_match ($pattern2, $input, $rez2, PREG_OFFSET_CAPTURE, strlen($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>';
?>
|
Если чё, допилите. | |
|
|
|