Autor Zpráva
hw3
Profil
Chci se zeptat, jak je možno v regulárním výrazu udělat zápor z určité sekvence znaků. Vím, že když se nesmí v řetězci vyskytovat znaky a, b a c, napíšu to jako (^abc). Ale co když potřebuji znegovat nějaký podřetězec? Například budu mít řetězec "Lorem ipsum dolor ajajblabla sit amet consectetuer blabla adipiscing elit ajblabla tramtarára". A v něm chci něčím nahradit všechny výskyty podřetězce "blabla", před kterým však není "ajaj" (jenom "aj" tam být může!). Věděli byste někdo, jak napsat toto pravidlo pro fci preg_replace() ?
Děkuji.
hw3
Profil
Tak už to mám. Je potřeba to udělat pomocí negativních asercí. Takže jsem použil výraz

(?<!ajaj)(blabla)

A příklad:

<?php
$text = "Lorem ipsum dolor ajajblabla sit amet consectetuer blabla adipiscing elit ajblabla tramtarára";
$text = Preg_Replace("/(?<!ajaj)(blabla)/i","NÁHRADA", $text);
echo $text;
// Výstupem bude "Lorem ipsum dolor ajajblabla sit amet consectetuer NÁHRADA adipiscing elit ajNÁHRADA tramtarára"
?>
Toto téma je uzamčeno. Odpověď nelze zaslat.

0