Skocz do zawartości

przefiltrowanie zasyfionego tekstu


sirkus

Rekomendowane odpowiedzi

mam taki problem iż kiedyś przez swoją nieuwagę pozwoliłem sobie na zasyfienie sporej ilości ciekawych artykułów w bazie mnóstwem linków,

średnio na każdy artykuł w bazie jakiś żartowniś nawalił mi z 50 linków a artów jest sporo i ręczne wywalanie linków jest raczej niewykonalne

strip_tags() nie ratuje mnie bo w treści tych artykułów są zamieszczone różne znaczniki html (typu <h1><br /><b> itp)a mi chodzi tylko o usunięcie linków

preg_replace mogłoby chyba załatwić sprawę ale niestety z wyrażeniami regularnymi to jestem na bakier, dlatego prosiłbym o pomoc jak takie wyrażenie mogłoby wyglądać lub jak inaczej mógłbym to załatwić

przykład:

w zmiennej $tekst mam tekst artykułu i chciałbym przefiltrować go tak, aby pozbyć się pogrubionego tekstu <a href="index.php?function=show_all&no=84">więcej</a> , czyli części linka, pozostawiając z niego tylko anchor

Odnośnik do komentarza
Udostępnij na innych stronach

$text=strip_tags($text,'p div td tr') - zostawi ci tagi p div td tr a wywali pozostałe

albo

$text = mb_eregi_replace("<a[^>]*>.*</a>"," ",$text);

Aplikacje internetowe, systemy wspomagające SEO, programy pod Windows i Linux, info na https://shad.net.pl - dopisz się do Katalogu Firm

Odnośnik do komentarza
Udostępnij na innych stronach

$text=strip_tags($text,'p div td tr') - zostawi ci tagi p div td tr a wywali pozostałe

$text = mb_eregi_replace("<a[^>]*>.*</a>"," ",$text);

niestety pierwsze rozwiązanie raczej niezbyt mnie ratuje bo za dużo tego jest, choć w ostateczności przejrzę trochę tych artów i dodam znajdujące się tam znaczniki, choć napewno nie da się wszystkich uratować w 100%

natomiast drugie rozwiązanie jakie zaproponowałeś, działa na zasadzie że w zmiennej $text po przefiltrowaniu mam tekst do pierwszego linku, reszta jest ucięta ;/

Odnośnik do komentarza
Udostępnij na innych stronach

@Trotyl wielkie dzięki, prawie działa tak jak trzeba ;), lecz niestety nie pozostawia anchorów linków, tylko wycina z całego tekstu całe linki wraz z anchorami ale lepsze to niż całkowicie niesformatowany tekst bez wszelkich znaczników html, jednak gdyby komuś z Was jeszcze coś ciekawego wpadło do głowy to będę bardzo wdzięczny

Odnośnik do komentarza
Udostępnij na innych stronach

function strip_selected_tags($text, $tags = array())
{
	$args = func_get_args();
	$text = array_shift($args);
	$tags = func_num_args() > 2 ? array_diff($args,array($text))  : (array)$tags;
	foreach ($tags as $tag){
		if(preg_match_all('/<'.$tag.'[^>]*>(.*)<\/'.$tag.'>/iU', $text, $found)){
			$text = str_replace($found[0],$found[1],$text);
	  }
	}

	return $text;
}

strip_selected_tags($text, 'a')

Sprawdź to ;)

logo-stat4seo-blue-small.png

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności