| 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: 13 let
|
|||
0