Autor Zpráva
Začátečník
Profil *
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 *
Najdeš si poslední pomlčku a pak vezmeš znaky od nultého až k pomlčce.
Začátečník
Profil *
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 *
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
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 *
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 *
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
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
Začátečník:
Řádek 8 mi přijde divný. Řádky 7 a 8:
if ($post === false) {
    echo "Vysledek je: $post";
$post je podle té podmínky přece false. A proč to vůbec testovat?
Mastodont
Profil
$string = 'moje-male-kolecko';
echo array_pop(explode("-", $string));
Začátečník
Profil *
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
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
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);

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: