Autor Zpráva
Milkys
Profil
Dobrý večer vážení,
chtěl bych udělat "pomůcku", která bude umět přečíst texty článků z wikipedie, které mám v xml souboru. Nerad bych tahal dříví do lesa a tak budu rád i za link pokud někdo o podobné "pomůcce" ví.
Snad to dobře vysvětlím.
Ukázka:
Nějaký text [[Parkán|parkánová zeď]] a pokračuje text.
Potřebuji, aby se to vypsalo takto:
Nějaký text parkánová zeď a pokračuje text.
Může mi prosím někdo z Vás pomoci? Zkoušel jsem napsat funkci, ale... těch podmínek v sintaxi je tolik, že ve finále strtr na to nestačila.
function xmlwikisyntax($retezec)
{
    $prevod=array(
        '**' => '',//...**tučné**
        '//' => '',//...takto je //kurziva//
        '__' => '',//...__podtržené__
        "''" => '',//...''neproporcionální''
        '===' => '',//...h4
        '====' => '',//...h3
        "==" => '',//...h5
        "----" => '',//...4 a více pomlček je vodorovná čára
        '\\' => '',//...zalomení řádku bez nového odstavce, platné jen pokud předtím není [[, protože to může být i takto: [[\\server\disk|tento]] a to je odkaz.
        '[[' => '',//začátek odkazu <a href = ".... pak je | vyjadřující "> . V případě použití odkazů -> asi regulár.
        ']]' => '',//konec odkazu </a>
        );
    return strtr($retezec,$prevod);
}
Takže jsem skončil jen u výmazu těchto znaků a to není to co chci.
Např tag <h3> je v html párovým tagem, takže nešlo použít '====' => '<h3>', no a podobně je to i u ostatních "wiki_tagů".

Napadá mě regulární výraz.
Něco jako:
jestli se v textu vyskytuje ==== nahraď <h3> a další vyskytující se ==== nahraď </h3>.
nebo
jestli se v textu vyskytuje | mezi [[ a ]] vymaž to co je mezi [[ a | a vymaž ]].

Když ho někdo prosím napíše a okomentuje budu velice rád. Stačí jen na mnou uvedenou ukázku. Těch úprav tam mám více, ale chci na to přijít sám a reguláry se už konečně naučit - alespoň základy. Bude mi stačit vyřešit toto, abych se měl od čeho odpíchnout. Až to budu mít rád to sem dám i pro ostatní.
Vřelé díky.
Milkys
Profil
Domnívám se, že jsem našel to co potřebuji. Takže pro ostatní, kteří se trápí nebo se budou trápit podobným problémem:
Wiki parsery

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