Autor | Zpráva | ||
---|---|---|---|
Začátečník Profil * |
#1 · Zasláno: 24. 4. 2011, 20:45:30
Ahoj, jak můžu nejrychleji získat znaky před posledni pomlčkou?
Příklad "moje-male-auticko" // out auticko Děkuji pěkně za pomoc |
||
okolojdouci Profil * |
#2 · Zasláno: 24. 4. 2011, 20:49:07
Najdeš si poslední pomlčku a pak vezmeš znaky od nultého až k pomlčce.
|
||
Začátečník Profil * |
#3 · Zasláno: 24. 4. 2011, 21:07:54
okolojdouci:
Jenže slovo autíčko se muže změnit za jiný znak čili se změní i počet znaků za poslední pomlčkou.. pak asi nepůjde použit strrpos, ne? "moje-male-auticko" // out auticko "moje-mala-kolobezka" // out kolobezka "moje-velky-dum" // out dum Děkuji |
||
okolojdouci Profil * |
#4 · Zasláno: 24. 4. 2011, 21:12:45
Začátečník:
„pak asi nepůjde použit strrpos, ne?“ Nerozumím. První funkce najde pozici poslední pomlčky. Druhá funkce vrátí znaky od X-tého po Y-tý. Tzn. od nultého po tu pozici pomlčky, kterou sis našel. Kde je problém? |
||
Joker Profil |
#5 · Zasláno: 24. 4. 2011, 21:13:06
Začátečník:
Poznámka, to popsané jsou znaky za poslední pomlčkou, ne před. „čili se změní i počet znaků za poslední pomlčkou.. pak asi nepůjde použit strrpos, ne?“ Proč by ne, jen se musí udělat strrpos a vzápětí substr a ne strrpos, milion operací měnících ten řetězec a pak někdy substr. |
||
Začátečník Profil * |
#6 · Zasláno: 24. 4. 2011, 21:27:37
Tak jsem to nějak zesmolil , sice to funguje ale ten kod je otřesný a to nemluvím, že jedno zjištění zabere půl stranky kodu :(
<?php $mystringt = "moje-male-kolecko"; $a =(strlen($mystringt)); $post = strrpos($mystringt, '-'); if ($post === false) { echo "Vysledek je: $post"; } else { $b = $post; } $retezec = substr($mystringt, $b+1, $a); echo $retezec; ?> |
||
okolojdouci Profil * |
#7 · Zasláno: 24. 4. 2011, 21:37:29
Začátečník:
If length is omitted, the substring starting from start until the end of the string will be returned. Jestliže délka není zadána, funkce vrací string až do konce toho původního. Takže ř. 4 můžeš vynechat a ř. 13 upravit. Kromě toho bych ř. 13 (po drobné úpravě) dal místo ř. 10 a ušetříš jednu proměnnou. |
||
panther Profil |
#8 · Zasláno: 24. 4. 2011, 21:46:16 · Upravil/a: panther
Začátečník:
$string = 'moje-male-kolecko'; echo ltrim(substr($string, strrpos($string, '-')), '-'); // kolecko $string = 'mojemalekolecko'; echo ltrim(substr($string, strrpos($string, '-')), '-'); // mojemalekolecko |
||
Joker Profil |
#9 · Zasláno: 24. 4. 2011, 21:51:19
Začátečník:
Řádek 8 mi přijde divný. Řádky 7 a 8: if ($post === false) { echo "Vysledek je: $post"; |
||
Mastodont Profil |
#10 · Zasláno: 24. 4. 2011, 21:52:56
$string = 'moje-male-kolecko'; echo array_pop(explode("-", $string)); |
||
Začátečník Profil * |
#11 · Zasláno: 24. 4. 2011, 22:00:43
panther:
> $string = 'mojemalekolecko'; > echo ltrim(substr($string, strrpos($string, '-')), '-'); //mojemalekolecko Tato situace může samozřejmě nastat, díky za upozornění, řešení tedy asi bude nejprve zjistit jestli požadovaný znak vůbec v řetězci existuje, že? Bude to takto zprávně? Nebo to jde udělat jednodušeji? $string = 'moje-male-kolecko'; $pos = strrpos($string, "-"); if ($pos != false) { echo ltrim(substr($string, strrpos($string, '-')), '-'); } Děkuji moc za pomoc |
||
panther Profil |
#12 · Zasláno: 24. 4. 2011, 22:03:41
Začátečník:
pokud se v textu pomlčka nenachází, ten můj řádek vrátí celé slovo. V opačném případě vrátí obsah za poslední pomlčkou. Možná bude fungovat i Mastodontův kód, který vypadá kratšeji a trochu přehledněji. |
||
Mastodont Profil |
#13 · Zasláno: 24. 4. 2011, 22:14:59 · Upravil/a: Mastodont
Jak - možná bude fungovat? Ten kód funguje!! Ovšemod PHP 5.1 hází strict chybu, takže to je nutné upravit na:
$string = 'moje-male-kolecko'; $arr = explode("-", $string); echo array_pop($arr); |
||
Časová prodleva: 13 let
|
0