Jump to content
php.lv forumi

regulārās izteiksme


ohmygod

Recommended Posts

Manuprāt man vajag pavisam elementāru lietu.

No liela, gara teksta izdzēst konkrētu daļu. No viena vārda līdz kādam citam vārdam. Kaut vai 500 rindas viņiem būtu starpā.

 

tipa izdzēst tekstu starp vārdiem "sun" un "varde".

 

Raku pa manuāli, mēģināju visādi pats rakstīt, meklēju visādus piemērus pa tutoriāļiem - nekā...

Damnit. Tam takš nevajadzētu būt tik sarežģiti ne?

 

savus testa variantus nelikšu, jo viņu bija DAAAUUUDZ un neviens nestrādāja. Pilnīgi garām visdrīzāk visi!

Link to comment
Share on other sites

$string = "text text text text text sun sitais ir sliktais texts, sito nevajag radit varde text text text";
echo preg_replace("/(sun)(.*)(varde)/", "$1$3", $string);

$1 - sun

$2 - texts pa vidu

$3 - varde

Link to comment
Share on other sites

Tākš - vajag vēl biku helpu

ir teksts, šoreiz 1 rindā. Piemēram HTML kods.

 

<font>sunc</font> <b>kakis</b>

 

$up= preg_replace("/(<)(.*)(>)/", '$2',$txt);

mana domā bija aizvākt tagus, nu dajebkādus tagus. A jams novāc tikai pirm atverošo tagu un pēdējo atverošo tagu. Neņemot vērā pārējās sakritības. tb mazās sakritības...

Paliek:

font>sunc</font> <b>kakis</b

a mana doma bija:

sunc kakis

Link to comment
Share on other sites

A priekš kam tik dīvains regex?

$str = '<font>sunc</font> <b>kakis</b>';
$str = preg_replace('/<.*?>/','',$str);

Jā, un pie pirmā, suni un vardi. Korekti būtu šitā:

/(sun)(.*?)(varde)/s

Pretējā gadījumā, viņš tev tekstā atradīs pirmo "sun" un pēdējo "varde", un aizvāks visu pa vidu, neskatoties uz to , ka tev tur ir vēl "sun" un "varde". T.b. teksts "some text sun text to remove varde some text sun text to remove varde some text" tev kļūs par "some text sunvarde some text" , nevis gaidīto "some text sunvarde some text sunvarde some text" .

Edited by john.brown
Link to comment
Share on other sites

×
×
  • Create New...