Autor Zpráva
Faraonek
Profil *
Zdarvím,
nevím si rady s jednou věcí. V proměné mám uložený text, ve kterém jsou odkazy. Například toto:
Toto je <a href="cesta">link</a>.
Jak můžu tento odkaz oddělat? Takže aby nebyl klikací a zůstalo jen to "Toto je link", bez odkazu.
Joker
Profil
Faraonek:
Která z následujících variant je správná?
1. Má se odstranit jen ten konkrétní odkaz (doplnění: Případně další stejné odkazy), ničeho jiného si nevšímat.
2. Mají se odstranit všechny odkazy (tj. značky <a>), jiné HTML značky (jako třeba <strong>, <p> a další) v textu být mohou.
3. V textu nemají být žádné HTML značky, všechny se mají odstranit.
Faraonek
Profil *
2.
Joker
Profil
Faraonek:
Tak nejdůkladnější řešení by bylo použít HTML parser, ale pro běžné odkazy by fungovalo i nahrazení regulárního výrazu <(/?)a([^>]*)> prázdným řetězcem (viz preg_replace)
Ale je možné sestavit odkaz, na kterém to selže.
Jan Tvrdík
Profil
Takhle by to bylo s použitím DOM knihovny:
$doc = new DOMDocument();
$doc->loadHtml($html);
foreach ($doc->getElementsByTagName('a') as $link) {
    $parent = $link->parentNode;
    while ($child = $link->firstChild) $parent->insertBefore($child, $link);
    $parent->removeChild($link);
}
$html = $doc->saveHtml();

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: