PHP как из ссылки сделать просто текст

R
На сайте с 03.08.2012
Offline
131
1366

Здравствуйте, помогите, пожалуйста написать скрипт (как я понял регулярку), чтобы в тексте находил ссылку и делал её просто текстом + ссылка находиться в <noindex> т.е.:

$text = "текст..... <noindex><a href="tralala.ru" title="text..">http://site.ru</a></noindex> текст....";

Должно получиться после обработки:

$text = "текст... http://site.ru текст...";

Буду очень благодарен!

rkelly
На сайте с 08.06.2007
Offline
96
#1

как-то так :)

$text = strip_tags("текст..... <noindex><a href="tralala.ru" title="text..">http://site.ru</a></noindex> текст....");

K
На сайте с 16.12.2009
Offline
185
#2

strip_tags() убьет все тэги, в том числе и полезные. <span><b><p><div> и пр.

Попробуйте так:

$text=ereg_replace("<[/]*noindex>","",$text); // убирает <noindex> и </noindex>

$text=ereg_replace("<a [^>]*>","",$text); // убирает <a ********>

$text=ereg_replace("</a>","",$text); // убирает </a>

freebitco.in - раздача BitCoin'ов + депозит в BTC под 4,08% (https://goo.gl/M1WZoZ)
bay_ebook
На сайте с 28.05.2010
Offline
111
#3
Kuasar:
strip_tags() убьет все тэги, в том числе и полезные. <span><b><p><div> и пр.
Попробуйте так:

$text=ereg_replace("<[/]*noindex>","",$text); // убирает <noindex> и </noindex>
$text=ereg_replace("<a [^>]*>","",$text); // убирает <a ********>
$text=ereg_replace("</a>","",$text); // убирает </a>

у strip_tags() есть второй параметр, в котором можно указать какие теги трогать не нужно. Даже целый список тегов :).

Нужен прогер на php+mysql+понимание чужего кода? (/ru/forum/540660) Вам сюда PHP-шаман (http://php-shaman.pw/)
K
На сайте с 16.12.2009
Offline
185
#4

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

Поэтому, когда стоит задача "убрать ненужное", надо убирать ненужное, а не "убирать все, оставив нужное".

bay_ebook
На сайте с 28.05.2010
Offline
111
#5
Kuasar:
Проблема в том, что всегда найдется какой-нибудь нужный тэг, который ты забыл в исключениях. Если текст насыщен разной разметкой, то что-то забудется почти наверняка.
Поэтому, когда стоит задача "убрать ненужное", надо убирать ненужное, а не "убирать все, оставив нужное".

трехкратный вызов регулярки, даже не preg а устаревшей ereg - может стукнуть по нагрузке.

А нужные теги - сделать не проблема, их там максимум 2 десятка будет, а по факту думаю 4-6 основных хватит. Ну на крайний - регуляркой, только в один вызов.

K
На сайте с 16.12.2009
Offline
185
#6

С поставленными условиями, можно конечно обойтись и одним вызовом:

$text=ereg_replace("<noindex><a [^>]*>([^<]+)</a></noindex>","\\1",$text);

[Удален]
#7

Не будет работать ни одна из вышеприведённых регулярок, т.к. помимо удаления тегов нужно ещё вытягивать саму ссылку из href="ссылка"

bay_ebook
На сайте с 28.05.2010
Offline
111
#8
sasha_123:
Не будет работать ни одна из вышеприведённых регулярок, т.к. помимо удаления тегов нужно ещё вытягивать саму ссылку из href="ссылка"

ну если посмотреть первый пост ТС, то вытаскивать хреф не нужно, нужно сам анкор только.

Kuasar:
С поставленными условиями, можно конечно обойтись и одним вызовом:
$text=ereg_replace("<noindex><a [^>]*>([^<]+)</a></noindex>","\\1",$text);

чуток не так, ведь noindex не всегда может быть.


$text=preg_replace("/<(noindex|a)[^>]*>([^<]+)<\/(a|noindex)>/i","\\3",$text);

хотя ТС не уточнил задание, я скорее всего тоже фигню написал :)

siv1987
На сайте с 02.04.2009
Offline
427
#9

ereg вроде уже не поддерживается, по моему он уже во второй версии пятого php был deprecated.

TF-Studio
На сайте с 17.08.2010
Offline
334
#10

ereg* уже всё.

Вообще в целом задача должна решаться регулярками, но тут могут быть разные подводные камни.

Если надо обработать текстиз редактора визуального - то и strip_tags хватит.

Если парсинг контента - от регулярки.

Всё ещё лучший способ заработка для белых сайтов: GoGetLinks (https://www.gogetlinks.net/?inv=fahbn8).

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий