Zaloguj się, aby obserwować  
mojeprogramy.com

Regex - linki na text

Polecane posty

Chodzi o zastąpienie linków wew. treści na normalny text

W sieci cały czas trafiam tylko na sytuacje odwrotną

Wystarczy mi wyrażenie regularne

Jeszcze lepiej jakby było stricte pod WordPress a najlepiej jakby uwzględniało bbPressa

 


Polecam dobre darmowe programy których używam na co dzień. InternetSpeedTest.pl - speed test wszelaki oraz directX.pl

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

/<a [^>]+>([^<]+)</a>/gi

$t = preg_replace("/<a [^>]+>([^<]+)</a>/gi", $1, $t);

Polecam regexr.com do testowania swoich wyrażeń.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Jak to mawiają, wyrażenia regularne nie są do HTMLa, bo HTML regularny nie jest ;)

Tutaj alternatywne rozwiązanie:

$a = '<h1>Nagłówek 1!</h1><p>Przykładowy tekst z <a href="">linkiem</a> w środku.</p>';

$dom = new DOMDocument;
$dom->loadHtml($a, LIBXML_HTML_NODEFDTD);
foreach ($dom->getElementsByTagName('a') as $node) {
	$node->parentNode->replaceChild($dom->createTextNode($node->nodeValue), $node);
}
$a = utf8_decode($dom->saveHTML($dom));

echo $a; // <h1>Nagłówek 1!</h1><p>Przykładowy tekst z linkiem w środku.</p>

 


Tani hosting z darmowym certyfikatem SSL HEXCORE

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Jednak cos mi nie działa lub ja nie moge tego skleić

Podam na wzór działajacy kod
 

Cytat

function bb_table_replace( $text ) {
$text = preg_replace('/<a[\s]+[^>]*?href[\s]?=[\s\"\']*(.*?)[\"\']*.*?>([^<]+|.*?)?<\/a>/', "<span style=\"color:#fa3800;\">[usunięto_link]</span>", $text);
return $text;
}
add_filter('bbp_get_reply_content', 'bb_table_replace');

 

 


Polecam dobre darmowe programy których używam na co dzień. InternetSpeedTest.pl - speed test wszelaki oraz directX.pl

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

We wzorcu nie masz flagi "/g" więc złapie tylko pierwsze wystąpienie.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

rozwiązanie

 

function bb_table_replace( $text ) {
$text = preg_replace('/<a[\s]+[^>]*?href[\s]?=[\s\"\']*(.*?)[\"\']*.*?>([^<]+|.*?)?<\/a>/', "<span style=\"color:#fa3800;\">$1$2</span>", $text);
return $text;
}
add_filter('bbp_get_reply_content', 'bb_table_replace');


Polecam dobre darmowe programy których używam na co dzień. InternetSpeedTest.pl - speed test wszelaki oraz directX.pl

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się
Zaloguj się, aby obserwować  

  • Kto przegląda   0 użytkowników

    Brak zalogowanych użytkowników przeglądających tę stronę.