Autor | Zpráva | ||
---|---|---|---|
4ever Profil |
#1 · Zasláno: 1. 12. 2011, 12:25:33 · Upravil/a: 4ever
Zdravím,
potřeboval bych trochu poradit. Mám takovýto kód: foreach ($o[0] as $item): $id++; $item = preg_replace("/# -- Trigger(\d+)--/", "", $item); endforeach; Potřeboval bych změnit číslo Triggeru na $id. Umím jen dosadit obsah předlohy, ale nevím jak to zaměnit. Prosím o pomoc. |
||
king26 Profil |
#2 · Zasláno: 1. 12. 2011, 12:48:15
4ever:
Myslíš třeba takto? foreach ($o[0] as $item): $id++; $item = preg_replace("/# -- Trigger".$id."--/", "", $item); endforeach; Nebo nahradit číslo za id? foreach ($o[0] as $item): $id++; $item = preg_replace("/(# -- Trigger)(\d+)(--)/", "$1".$id."$3", $item); endforeach; Nevím, jestli jsem tě správně pochopil. |
||
4ever Profil |
#3 · Zasláno: 1. 12. 2011, 12:49:27
king26:
Dík, správně je ta verze 2. |
||
4ever Profil |
#4 · Zasláno: 1. 12. 2011, 13:15:04 · Upravil/a: 4ever
Ale ještě mi to nejede tak jak bych chtěl.
id je 2113. Chci vrátit tento řetězec: # -- Trigger2113-- $item = preg_replace("/(Trigger)(\d+)(--)/", "$1 "."$id$3", $item); Vrácený řetězec je: # -- Trigger 2113-- ale má to být bez mezery mezi Trigger a číslem. Když dám mezeru pryč: $item = preg_replace("/(Trigger)(\d+)(--)/", "$1"."$id$3", $item); Tak to nevrátí správný výsledek: # -- 113-- Slovo trigger tam není a jakoby to smazalo tu dvojku. Čili otázka zní, jak to zapsat, abych nemusel dávat mezeru mezi $1 a $id? |
||
king26 Profil |
#5 · Zasláno: 1. 12. 2011, 14:54:07
Nevykoumal jsem, jak to udělat v tom jednom preg_replace.
Ale jde to nějak takto: $item = str_replace("{{ID}}", $id, preg_replace("/(Trigger)(?:\d+)(--)/", "$1{{ID}}$2", $item)); |
||
4ever Profil |
#6 · Zasláno: 1. 12. 2011, 15:12:30
king26:
Já to taky udělal dvěma příkazama. Akorád místo mezery jsem vložil zavináč. |
||
4ever Profil |
#7 · Zasláno: 2. 12. 2011, 11:43:17 · Upravil/a: 4ever
Bylo by možné tento příkaz upravit tak,
preg_replace('/(?<=Effect:start).+(?=EndEffect:end)/sm', "", $item); // remove inside of the effect, but leave the frame. aby před "EndEffect:end" zůstalo zalomení? Příkaz má vymazat to, co je mezí "Effect:start" a "EndEffect:end". Před "EndEffect:end" je zalomení a tabulátor. " Effect:start nejaký text EndEffect:end" Tabulátor chci taky vymazat ale zalomení nechat, takže výsledný text má být: " Effect:start EndEffect:end" |
||
king26 Profil |
#8 · Zasláno: 3. 12. 2011, 11:16:55
4ever:
> Bylo by možné tento příkaz upravit tak aby před "EndEffect:end" zůstalo zalomení? Šlo, přidáním \n\t před výraz: '/(?<=Effect:start).+(?=\\n\\tEndEffect:end)/sm' |
||
Časová prodleva: 12 let
|
0