X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость ( Вход | Регистрация )

Открыть тему
Тема закрыта
> Удаление ссылок из текста, php
Crasher69
Crasher69
Topic Starter сообщение 12.8.2009, 22:44; Ответить: Crasher69
Сообщение #1


Бывалый
****

Группа: User
Сообщений: 346
Регистрация: 24.11.2008
Из: Киров
Поблагодарили: 75 раз
Репутация:   17  


Есть текст находится в 1 переменной, нужно из него удалить все ссылкИ, оставив лишь анкоры. Подскажите как правильно составить регулярное выражение для этого, а то я в них не шарю.


--------------------
Новости IT технологий. | Интересные новости мира.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
K_Yu_Pro
K_Yu_Pro
сообщение 12.8.2009, 22:56; Ответить: K_Yu_Pro
Сообщение #2


Участник
***

Группа: User
Сообщений: 102
Регистрация: 22.1.2009
Из: Москва
Поблагодарили: 21 раз
Репутация:   7  


а текст постоянно разный? имею в виду можно обойтись удалением определенных символов из переменной (например удалить символы с 1 по 3 и с 34 по 38) ?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Crasher69
Crasher69
Topic Starter сообщение 12.8.2009, 23:04; Ответить: Crasher69
Сообщение #3


Бывалый
****

Группа: User
Сообщений: 346
Регистрация: 24.11.2008
Из: Киров
Поблагодарили: 75 раз
Репутация:   17  


Всегда разный.


--------------------
Новости IT технологий. | Интересные новости мира.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
kronos
kronos
сообщение 12.8.2009, 23:28; Ответить: kronos
Сообщение #4


Белый веб-мастер
*******


Группа: Active User
Сообщений: 4703
Регистрация: 10.2.2009
Из: Харьков
Поблагодарили: 2629 раз
Репутация:   327  


$text=preg_replace("#(https?|ftp)://\S+[^\s.,>)\];'\"!?]#",'<a href="\\0">\\0</a>',$text);

Это выражение преображает текст httр://site.ru/ в ссылку http://site.ru/ , может у вас получиться его перевернуть...


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
K_Yu_Pro
K_Yu_Pro
сообщение 13.8.2009, 0:13; Ответить: K_Yu_Pro
Сообщение #5


Участник
***

Группа: User
Сообщений: 102
Регистрация: 22.1.2009
Из: Москва
Поблагодарили: 21 раз
Репутация:   7  


На самом деле стало интересно, как это сделать стандартными методами, так что сейчас займусь написанием скрипта для вас (хотя что-то мне подсказывает, что основная область применения будет с акцентом на грабинг)

И так, ТС, оценивай скрипт, все основано на стандартных функциях:

<?php
$tekst = "<a href='сиськи'>Мы любим сиськи</a> ну и просто <a href='ссылка' class='css'>о</a> сиськах <a href='еще'>для</a> примера";
echo "Исходный текст: ",$tekst, "<br><br>";

$link = "<a";
$linkov = substr_count($tekst, $link) * 2;

do
{
$linkov = $linkov - 1;
$link_start =  strpos ($tekst, "<");
$link_finish = strpos ($tekst, ">");
$udalyaem_simvoli = $link_finish - $link_start +1;
$tekst = substr_replace($tekst, "", $link_start, $udalyaem_simvoli);
}
while ($linkov > 0);

echo "Текст, после редактирования: ",$tekst;


?>


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

Сообщение отредактировал K_Yu_Pro - 13.8.2009, 0:49


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Crasher69
Crasher69
Topic Starter сообщение 13.8.2009, 11:20; Ответить: Crasher69
Сообщение #6


Бывалый
****

Группа: User
Сообщений: 346
Регистрация: 24.11.2008
Из: Киров
Поблагодарили: 75 раз
Репутация:   17  


Спасибо огромное. K_Yu_Pro, твой код заставил меня немного призадуматься, с твоим примером, где все так просто, работает норм, вот код который получился. Но с моим всетаки пока неочень, там много нюансов. Ну всеравно спасибо, буду дальше дорабатывать)
<?
$tekst = "<b><a href=\"сиськи\">Мы любим сиськи</a></b> ну и просто <a href=\"ссылка\" class=\"css\">о</a> сиськах <a href=\"еще\">для</a> примера";

echo "Текст, до редактирования: ",$tekst;

$link = "<a";
$linkov = substr_count($tekst, $link) * 2;

do
{

$linkov = $linkov - 1;
$link_start =  strpos ($tekst, "<a");
$link_finish = strpos ($tekst, "\">");
    if ($link_start==0)
    break;

$udalyaem_simvoli = $link_finish - $link_start +2;
$tekst = substr_replace($tekst, "", $link_start, $udalyaem_simvoli);

}
while ($linkov > 0||$link_start>0);

// Теперь удалим оставшиеся теги </a>
$link = "</a>";
$out= str_replace($link,"",$tekst);
echo "<br> Текст после редактирования: ".$out;

    ?>


Обновление, если кому пригдится, довел до ума, погуглил насчет функции strpos, теперь ниче не лагает, все нужные теги остаются на месте:
Изначально текст в переменной $content

$link = "</a>";
$out= str_replace($link,"",$content); //Вырезали закрывающие теги
//Теперь текст в $out

$link = "<a";
$linkov = substr_count($out, $link) * 2;
do
{
$linkov = $linkov - 1;
$link_start =  strpos ($out, "<a");
$link_finish = strpos ($out, ">",$link_start);
if ($link_start==0)
    break;
$udalyaem_simvoli = $link_finish - $link_start +1;
$out = substr_replace($out, "", $link_start, $udalyaem_simvoli);

}
while ($linkov > 0);
echo $out;


Вся фигня в том, что было - искало первое вхождение > в тексте, теперь этот закрывающий тег ищется после <a - так правильнее wink.gif

Сообщение отредактировал Crasher69 - 13.8.2009, 11:27


--------------------
Новости IT технологий. | Интересные новости мира.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
xpert13
xpert13
сообщение 13.8.2009, 23:39; Ответить: xpert13
Сообщение #7


Бывалый
****

Группа: User
Сообщений: 364
Регистрация: 13.7.2009
Поблагодарили: 87 раз
Репутация:   18  


Боже мой! А не проще выучить регулярки и решить задачу в одну строку?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
gamerati
gamerati
сообщение 14.8.2009, 1:21; Ответить: gamerati
Сообщение #8


Бывалый
****

Группа: User
Сообщений: 398
Регистрация: 28.4.2009
Из: Мариуполь
Поблагодарили: 84 раза
Репутация:   18  


$text = preg_replace('/<[\/]?a[^>]*>/i', '', $text);
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Crasher69
Crasher69
Topic Starter сообщение 14.8.2009, 9:49; Ответить: Crasher69
Сообщение #9


Бывалый
****

Группа: User
Сообщений: 346
Регистрация: 24.11.2008
Из: Киров
Поблагодарили: 75 раз
Репутация:   17  


хехехе. Мы не ищем легких путей)
"Нормальные герои всегда идут в обход" )))


--------------------
Новости IT технологий. | Интересные новости мира.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) 16 площадок под размещение сквозных ссылок
Сайты: СМИ, финансы, авто, медицина, туризм, кулинария под сквозняки
9 inkon 1969 15.12.2017, 20:44
автор: inkon
Горячая тема (нет новых ответов) Ручное размещение постовых и контекстных вечных ссылок/заметок/статей
новостной сайт (СМИ), ТИЦ=550, PR=4, в Яндекс.Новостях (быстроробот)
163 inkon 48362 15.12.2017, 20:16
автор: inkon
Горячая тема (нет новых ответов) Ручное размещение вечных ссылок и статей на хороших площадках
Опыт 8 лет!
194 leonidukg 77306 15.12.2017, 8:00
автор: alekspik
Горячая тема (нет новых ответов) Тематичность ссылок не имеет значения?
32 Gold999 5099 14.12.2017, 21:35
автор: alexandrrr
Открытая тема (нет новых ответов) 200 жирных вечных ссылок с Трастовых сайтов!
8 dimapwt 552 14.12.2017, 14:34
автор: Flensel


 



RSS Текстовая версия Сейчас: 17.12.2017, 8:44
Дизайн