Autor Zpráva
Lokutus7323
Profil *
Dobrý den,
chtěl bych se zeptat, zda existuje možnost(třeba nějaká funkce v PHP) ..která by mi otočila vstupní řeťězec..


Například:
vstupní slovo by bylo : ahoj
a script by mi vyhodil: joha
nebo
vstupní: 123
výstupní: 321

Děkuji
Watchick
Profil
echo(strrev("ahoj ")); // output: joha
echo(strrev("ahoj ")); // output: joha
blbec
Profil *
nebo složitější řešení:

1<?php
2$u = 'Žluťoučký koňík.';
3for($i = 0; $i < mb_strlen($u, 'utf-8'); $i++) {
4$a[] = mb_substr($u, $i, 1, 'utf-8');
5}
6$a = array_reverse($a);
7foreach($a as $t) print $t; // .kíňok ýkčuoťulŽ
8?>
<?php
$u 'Žluťoučký koňík.';
for($i 0$i mb_strlen($u'utf-8'); $i++) {
$a[] = mb_substr($u$i1'utf-8');
}
$a array_reverse($a);
foreach($a as $tprint $t; // .kíňok ýkčuoťulŽ
?>
Watchick
Profil
Ale proč to dělat zdlouhavě, když to jde jednoduše a je na to speciálně funkce? :)
blbec
Profil *
protože:

print strrev('Žluťoučký koňík.'); // .k�È�ok ��k��uo��ul��
blbec
Profil *
ale tak záleží, na co to bude :-)
Watchick
Profil
blbec
to to vážně dělá?
není to chybou formátování?
blbec
Profil *
já jsem to zkusil. tady je kód:

1<html><head>
2        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
3        <meta http-equiv="Content-Language" content="cs" />
4        </head><body>
5        
6        <?php
7$u = 'Žluťoučký koňík.';
8 
9for($i = 0; $i < mb_strlen($u, 'utf-8'); $i++) {
10$a[] = mb_substr($u, $i, 1, 'utf-8');
11}
12$a = array_reverse($a);
13foreach($a as $t) print $t; // .kíňok ýkčuoťulŽ 
14 
15print '<br />'.strrev($u);
16 
17?>
18</body></html>
<html><head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta http-equiv="Content-Language" content="cs" />
        </head><body>
        
        <?php
$u 'Žluťoučký koňík.';
 
for($i 0$i mb_strlen($u'utf-8'); $i++) {
$a[] = mb_substr($u$i1'utf-8');
}
$a array_reverse($a);
foreach($a as $tprint $t; // .kíňok ýkčuoťulŽ 
 
print '<br />'.strrev($u);
 
?>
</body></html>


a tady je výsledek: http://83.208.153.155:20080/utf.php
blbec
Profil *
snad není chyba u mně :-D to bych se pěkně ztrapnil. zas takovej PHP Guru nejsem
Watchick
Profil
http://travian.damak.cz/test/diskuze.php
tedy v meta tagu jsem dal kódování 1250, a u tebe to specifické utf-8, a jede to obojí...
Takže si myslím, že by šlo vošéfovat nějakým způsobem i v utf-8

Je zajímavé, jak takový banální dotaz rozpoutá takovouto diskuzi, a autor se tu jen tak neukaze xD
Watchick
Profil
Post have been deleted
kletely
Profil
blbec
Chyba u teba nie je. No len pri windows-1250 to ide inak nie. Ani keď dám
Header("Content-type: text/html; charset=utf-8;");
Header("Content-type: text/html; charset=utf-8;");
Lokutus7323
Profil *
takhle pořebuji to na otočení řady čísel..konkrétně pro něco typu: opiště text z obrázku (obráceně)
fuckin
Profil *
jelikoz v utf ceske znaky nezabiraji jeden bajt ale dva tak proto to zobrazi takovou blbost...
blbec
Profil *
lokotus: tak jestli to máš na captchu, tak použil fce md5() nebo sha1()

Watchkick: Ano, máš naprostou pravdu :-) takže podle mně stačí v UTF_8 místo strrev() použít

1function mb_strrev($string)
2{
3$return = '';
4for($i = 0; $i < mb_strlen($u, 'utf-8'); $i++) {
5$a[] = mb_substr($u, $i, 1, 'utf-8');
6}
7$a = array_reverse($a);
8foreach($a as $t) return .= $t;
9return  $return;
10}
function mb_strrev($string)
{
$return '';
for($i 0$i mb_strlen($u'utf-8'); $i++) {
$a[] = mb_substr($u$i1'utf-8');
}
$a array_reverse($a);
foreach($a as $treturn .= $t;
return  $return;
}

ani mb_convert_encoding(strrev($u), 'utf-8') ($u je string) nepomohlo
Lokutus7323
Profil *
Děkuji, za rady všeho typu:) ... problém jsem vyřešil pomocí metody strrev(), protože budu otáčet je řady čísel, takže o kódování nemusím mít strach.


Ještě jednou děkuji všem, převážně pak Watchick(ovi)
blbec
Profil *
http://stackoverflow.com/questions/434250/how-to-reverse-a-unicode-string
Watchick
Profil
haha :D
Watchick: 1
Jupí
net-vor
Profil *
blbec:
function mb_strrev($string)
{
$return = '';
for($i = 0; $i < mb_strlen($u, 'utf-8'); $i++) {
$a[] = mb_substr($u, $i, 1, 'utf-8');
}
$a = array_reverse($a);
foreach($a as $t) return .= $t;
return $return;
}

Tahle funkce je nesmyslná a nefunguje. Posílám lepší, funkční:
1    function mb_strrev($string)
2    {
3        for ($i = 0; $i < mb_strlen($string, 'utf-8'); $i++)
4        {
5            $a[] = mb_substr($string, $i, 1, 'utf-8');
6        }
7        $a = array_reverse($a);
8        return implode("", $a);
9    }
    function mb_strrev($string)
    {
        for ($i 0$i mb_strlen($string'utf-8'); $i++)
        {
            $a[] = mb_substr($string$i1'utf-8');
        }
        $a array_reverse($a);
        return implode(""$a);
    }


tvorba webových stránek - net-vor.cz

Moderátor nightfish: Odkaz jsem odstranil, nesouvisí s tématem.
__construct
Profil
Na čo vyťahuješ staré vlákno ?
Na čo sem strkáš odkaz na svoje stránky ?
Alphard
Profil
[#20] __construct
O tom odkazu hodně přemýšlím, jestli tolerovat, nebo ne. Ale v doplnění i starého tématu o funkční (lepší, další) řešení není problém.
nightfish
Profil
Alphard:
O tom odkazu hodně přemýšlím, jestli tolerovat, nebo ne.
Odkaz přímo nesouvisí s řešeným problémem, jsem pro smazání.

Ale v doplnění i starého tématu o funkční (lepší, další) řešení není problém.
jsem jediný, komu připadne zbytečné cpát ty znaky do pole?
1function mb_strrev($string)
2{
3  $vystup = '';
4  for ($i = mb_strlen($string, 'utf-8') - 1; $i >= 0; $i--)
5  {
6    $vystup .= mb_substr($string, $i, 1, 'utf-8');
7  }
8  return $vystup;
9}
function mb_strrev($string)
{
  $vystup '';
  for ($i mb_strlen($string'utf-8') - 1$i >= 0$i--)
  {
    $vystup .= mb_substr($string$i1'utf-8');
  }
  return $vystup;
}
Toto vlákno je staré, již dlouho do něj nikdo nepřispíval.

Informace a odkazy zde uváděné už nemusejí být aktuální. Nechcete-li řešit zde uvedenou konkrétní otázku, založte si vlastní vlákno, nepište do tohoto. Vložíte-li sem nyní příspěvek, upoutáte pozornost mnoha lidí a někteří z nich si jen kvůli vám přečtou i všechny předcházející příspěvky. Předpokládáte-li, že váš text skutečně bude hodnotný, stiskněte následující tlačítko:


Běda vám, jestli to bude blábol.

0