Autor | Zpráva | ||
---|---|---|---|
Trojan Profil * |
#1 · Zasláno: 1. 5. 2012, 15:25:37
Ahoj,
dal by se tento příkaz nahradit jiným příkazem, tak aby ve provedla záměna pouze jednoho slova? $bfn = preg_replace('/pod|nad|u/', '', $bfn); Jde mi o to, aby se z řetězce odstranilo jedno ze tří slov. Test se má provádět v tomto pořadí, takže pokud existuje "pod", odstraním pod, pokud neexistuje "pod", ale existuje "nad", odstraní se nad. Pokud neexistuje ani "nad", odstraní se "u " |
||
Majkl578 Profil |
#2 · Zasláno: 1. 5. 2012, 23:42:04
Trojan:
Stačí ti str_replace, 4. parametr je referencí vracený počet nahrazení. |
||
Someone Profil |
#3 · Zasláno: 1. 5. 2012, 23:46:19
Majkl578:
Na to pouhe str_replace nestačí, přečetl jsi si pořádně zadání? Trojan: Z řetězce: Pod dubem na stromě u domu pod stolem na stole u dveří. Co z toho má zniknout? Má se odstranit jen první Pod? Tudíž -> dubem na stromě u domu pod stolem na stole u dveří. Nebo všechny Pod takže-> dubem na stromě u domu stolem na stole u dveří. |
||
Majkl578 Profil |
#4 · Zasláno: 2. 5. 2012, 00:57:18
Someone:
„přečetl jsi si pořádně zadání“ Ale samozřejmě. A trvám na tom, že str_replace na to stačí. Ze zadání vyplývá, že má seznam slov k nahrazení přičemž chce nahradit pouze první nalezené a dále už nepokračovat. Toho se tedy dá docílit poměrně snadno cyklem nad polem hledaných slov: $search = ['pod', 'nad', 'u']; $replaceBy = ''; $string = 'pod dubem na stromě'; foreach ($search as $word) { $string = str_replace($word, $replaceBy, $string, $replaced); if ($replaced) break; // nahrazeno, konec } |
||
Someone Profil |
#5 · Zasláno: 2. 5. 2012, 01:03:22
Majkl578:
V tomto případě ano, ale pokud by chtěl Trojan odstranit všechna "POD" nebo "NAD" nebo "U", na základě toho, které z nich se vyskyzuje, tak by to nestačilo. Ze zadání není stoprocentně jasné, jak to má být, proto jsem se ptal: Someone: > Trojan: > Z řetězce: Pod dubem na stromě u domu pod stolem na stole u dveří. > Co z toho má zniknout? Má se odstranit jen první Pod? Tudíž -> dubem na stromě u domu pod stolem na stole u dveří. > Nebo všechny Pod takže-> dubem na stromě u domu stolem na stole u dveří. Nebo to jasné je, ale já jsem to z toho nevyčetl. |
||
Trojan Profil * |
#6 · Zasláno: 4. 5. 2012, 10:02:13 · Upravil/a: Trojan
Díky za odpovědi. V textu je vždy jen jedna předložka.
Nakonec jsem to udělal takto: $bfn = preg_replace('/ pod | nad | u /', ' ', $bfn); $tmp = str_replace(' ', ' ', $tmp); Oprava: $bfn = preg_replace('/ pod | nad | u /', ' ', $bfn); $bfn = str_replace(' ', ' ', $bfn); |
||
Časová prodleva: 11 let
|
0