Autor Zpráva
Dědeček
Profil
Dobrý den,

Nevím si už rady. Mám v textu odkaz například <a href="http://example.com">Test</a> Potřebuji aby se tento odkaz přepsal na <a href="#" onClick='top.location.href="http://example.com"'>Test</a> jenomže co když náhodou uživatel zapisující odkaz ještě do odkazu přidá, třeba title. Našel jsem na internetu tuto funkci, jenomže ať zkouším jak zkouším pořád se nemůžu dopracovat k správnému výsledku.

Děkuji za jakoukoliv pomoc. Ještě bych se zeptal jestli je někde nějaké obecné info k "[^>]+" vůbec nevím co to znamená a google nic neřekne a rád bych se to naučil. Děkuji

<?php
    function target_links( $html )
    {       
        $pattern = "/<(a)([^>]+)>/i";
        $replacement = "<\\1 target=\"_blank\"\\2>";
        $new_str = preg_replace($pattern,$replacement,str_replace('target="_blank"','',$html));     
        return $new_str;
    }
?>
Tori
Profil
$html = '<a href="http://example.com">Test</a> <a href=\'url-v-apostrofech.html\'>test2</a>';
$html = preg_replace('~href=(["\'])([^"]+)\\1~iU', 'href="#" onclick="top.location.href=\'\\2\';"', $html); // ↓ doplněno
Pozn.: tohle nahrazení nekontroluje, jestli řetězec href="něco" je atributem tagu <a>, ale nahradí všechny výskyty.
K druhému dotazu: hledejte "regulární výrazy" (zkuste např. http://www.regularnivyrazy.info/ , funkce preg_replace se týká část o "Perl-compatible" regulárních výrazech.
Dědeček
Profil
Vyzkouším. Jen tak od oka jak se na to dívám nebude výstup pouze <a onclick='top.location.href="http://example.com"'>Test</a> ? Není tam potřeba href="#"

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: