Autor | Zpráva | ||
---|---|---|---|
capricorn Profil |
#1 · Zasláno: 4. 11. 2009, 13:22:07
Zdravim,
potrebuji z retezce odstranit vsechno co nema pred a za zavorku. $code = 'blablabla (chci)'; $code = preg_replace('/([a-z]{4})/', '', $code); echo $code; // potrebuji vypsat "chci" |
||
nightfish Profil |
#2 · Zasláno: 4. 11. 2009, 13:32:55
capricorn:
„potrebuji z retezce odstranit vsechno co nema pred a za zavorku.“ chceš tedy zjistit, co je v závorce? if (preg_match('~\((.*)\)~Us', $code, $matches)) echo $matches[1]; |
||
capricorn Profil |
#3 · Zasláno: 4. 11. 2009, 13:38:33
nightfish:
chceš tedy zjistit, co je v závorce? Potrebuji z retezce odstranit vse krome textu v zavorce. |
||
Majkl578 Profil |
#4 · Zasláno: 4. 11. 2009, 13:40:08
$code = 'aaa (bb) cc(dd) ee'; $code = preg_replace('~.*(?:\((.+)\)).*~Ui', '\\1', $code); echo $code; |
||
capricorn Profil |
#5 · Zasláno: 4. 11. 2009, 13:48:55
Majkl578:
Chvilka na vysvetleni by se nenasla? Potreboval bych to vysvetlit, jinak to nepochopim. ;-) Nechapu hlavne tohle (?:\((.+)\)) |
||
Majkl578 Profil |
#6 · Zasláno: 4. 11. 2009, 14:00:08
capricorn:
?: znamená nezachytit referenci \( a \) je escapování závorek mezi kterými hledáme (.+) zachytí vše mezi závorkami (těmi escapovanými) ostatní se zahodí |
||
TomášK Profil |
#7 · Zasláno: 4. 11. 2009, 14:07:10
K čemu je tam ta zpětná reference, kterou nezachytáváš? Zdá se mi, že se to bude chovat stejně i bez ní.
|
||
Majkl578 Profil |
#8 · Zasláno: 4. 11. 2009, 14:12:33 · Upravil/a: Majkl578
TomášK:
Nebude, respektive bude, ale musel bych v druhém argumentu funkce použít \\2 namísto \\1, jelikož bych chtěl druhou referenci (tu vnitřní mezi závorkami). A já preferuji řešení kdy nepotřebné reference zahazuji... :) Můžeš to zkusit tak, že odstraníš ?: a uvidíš co se stane. Vrátí ti to to co chceš, ale ohraničené závorkami (které nechceme). Spíš by byla dobrá připomínka to, že je zbytečná, což když na to znovu koukám je (Nechal jsem ji tam když ten regulár měnil). Šlo by to bez ní, takto: ~.*\((.+)\).*~Ui |
||
capricorn Profil |
#9 · Zasláno: 5. 11. 2009, 09:42:25
Majkl578:
Promin, ale vcera jsem byl uz offline. Jinak dekuji za vysvetleni. |
||
Časová prodleva: 14 let
|
0