Autor Zpráva
Javař
Profil *
Dobrý den,
potřeboval bych poradit s věcí ohledně regulérních výrazů. Trochu se v nich vyznám, ale na toto nestačím.

Mám následující řetězec:

* [[1848]] – [[Karl Marx|Karel Marx]] a [[Bedřich Engels]] publikovali manifest Komunistické strany.


A chci se zbavit části

[[Karl Marx|
nebo z

[[Karl Marx|Karel Marx]]
zachovat pouze Karel Marx
problém je, že používám následující

echo ereg_replace("\[.\|", "", $string);

a výsledkem je

* Karel Marx]] a [[Bedřich Engels]] publikovali manifest Komunistické strany.

Moderátor Joker: Regulérně se to jmenuje regulární výraz. Zpřesnil jsem titulek, vláken pojmenovaných "regulární výraz" nebo "regulární výrazy" je tu tuna.
Majkl578
Profil
echo preg_replace('~\[\[[^\[]+\|([^\]]+)\]\]~', '[[\\1]]', '* [[1848]] – [[Karl Marx|Karel Marx]] a [[Bedřich Engels]] publikovali manifest Komunistické strany.');
Javař
Profil *
Děkuji moc!
Nemohl bys mi to prosím nějak rozepsat poo krocích, proč je to zrovna takhle?
Majkl578
Profil
\[\[ - úvodní [[
[^\[]+ - vše kromě [
\| - oddělovač |
([^\]]+) - vše kromě ], zachytit obsah
\]\] - koncové ]]

[[\\1]] - \\1 je zachycený obsah

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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