Autor Zpráva
filiphk
Profil
Ahoj,

používám str_replace pro převod odkazů na text:

{$odkazy = str_replace(Array("<a href='/psi'>","<a href='/kocky'>","<a href='/ostatni'>","</a>"),"",$odkazy); return $odkazy;};


Zmíněný zápis bych chtěl upravit na preg_replace, aby se na text převedly všechny odkazy, aniž bych je musel jednotlivě vypisovat. Poradí prosím někdo jak na to?

Děkuji.
Str4wberry
Profil
Můžeš použít i funkci strip_tags.
filiphk
Profil
Mohl bys to prosím uvést na konkrétním příkladu?
__construct
Profil
Mám taký dojem, že strip_tags nedovoľuje manipulovať s atribútmy
Riešil by som to takto:
//Načítaj HTML stránku
$html = file_get_contents('stranka.html');
//vytvor si DOM document
$dom = new DOMDocument();
 
//Parsuj HTML - @ je tam na potlačenie chýb nevalídneho zdrojáku
@$dom->loadHTML($html);
 
//Načítaj všetky anchory
$linky = $dom->getElementsByTagName('a');
 
//Z každého anchoru vyber adresu
$odkazy = array();
foreach ($linky as $link){
	$odkazy[] = $link->getAttribute('href');
}
filiphk
Profil
Děkuji za možné řešení, avšak přijde mi poněkud složité. Pomocí preg_replace to není možné nějak udělat?
Str4wberry
Profil
Ale vždyť cílem je odstranit odkazy, jak jsem vyčetl z příkladu, ne?
filiphk
Profil
Tak již jsem to vyřešil pomocí strip_tags následujícím způsobem:

$odkazy = strip_tags($text); $text = $odkazy;



Nyní bych však potřeboval ještě nějak udělat, aby se namísto odstraněných tagů vytvořila mezera, jelikož:

1. původně text vypadal např. takto
...přišel pes.</p><p>Kočka utíká...


2. nyní vypadá takto
...přišel pes.Kočka utíká...
filiphk
Profil
Mezeru mezi interpunkčními znaménky jsem nakonec vyřešil pomocí str_replace, které jsem šoupnul před strip_tags. Celý kód vypadá takto:

function mezera($mezera2)
{$mezera2 = str_replace(Array("<br />","</p><p>")," ",$mezera2);
return $mezera2;};

$text = mezera($text);
$odkazy = strip_tags($text); $text = $odkazy;

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0