Som besökare på Hamsterpaj samtycker du till användandet av s.k. cookies för att förbättra din upplevelse hos oss. Jag förstår, ta bort denna ruta!
Annons

Php - göra egen namnfunktion

Skapad av Borttagen, 2011-02-23 23:34 i Webbutveckling & Programmering

1 931
12 inlägg
0 poäng
Nathanael
Visningsbild
P 32 Hjälte 4 322 inlägg
0
Hej!

Tänkte koda något liknande denna lilla HP-funktionen:
http://www.hamsterpaj.net/mattan/ditt_namn

Men har inte kommit på något effektivt sätt att göra det - är fortfarande osäker på PHP, och är tveksam på hur man använder str_replace på bara ett ord (alltså en bokstav i taget).

Ett stycke PHP-kod:

$text = "Namn här";

$text = str_replace("h","a", $text);

echo $text; // Ger "Namn aär"

Problemet med ovanstående är att om man skall ersätta alla bokstäver i meningen/namnet med två eller tre andra bokstäver, kommer den hitta dubbletter och kanske skriva i oändlighet.

Har funderat på en loop som går igenom hela alfabetet, stora och små bokstäver - och lägger i en tillfällig array, samt läsa in $text igen, fast utan det ersatta tecknet. Men jag vill veta om det finns ett bättre sätt. Jag har bara börjat kolla på lösningar, så det är inget långt kommet.

Vet att HP är/var Open Source, och undrar om ovanstående länkning finns att läsa någonstans?
Annars - någon som har tips på hur man skall göra på bästa sätt?

Emmos snis riyi emmos snis

Är reklamen ivägen? Logga in eller registrera dig så försvinner den!

Phelix
Visningsbild
P 36 Linköping Hjälte 1 029 inlägg
0

Svar till Nathanael [Gå till post]:
Programmerar inte PHP, men har svårt att tänka mig att str_replace fungerar som du tror.

Ingen status

Tvillingen
Visningsbild
P 31 Hjälte 3 117 inlägg
0
Här har du koden som hamsterpaj använder för att lösa detta (:

https://github.com/Hamsterpaj/hamsterpaj/blob/master/mattan/ditt_namn.php

Jag är ond!

Nathanael
Visningsbild
P 32 Hjälte 4 322 inlägg
Trådskapare
0
Svar till Tvillingen [Gå till post]:
Ah!
Swich hade jag säkert kommit till någon gång!^^
Tack så mycket!:D


Svar till Phelix [Gå till post]:
str_replace byter ut tecken(vilket jag tror, men det kan vara annorlunda - inget illa menat^^), som HP så vackert använder sig av för attt göra 1337-språk av namn:

Ett stycke PHP-kod:

function makeLeetSpeak($name){
$name = str_replace('a','4', $name);
$name = str_replace('A','4', $name);
$name = str_replace('e','3', $name);
$name = str_replace('E','3', $name);
$name = str_replace('i','1', $name);
$name = str_replace('I','1', $name);
$name = str_replace('o','0', $name);
$name = str_replace('O','0', $name);
$name = str_replace('ks','xx', $name);
$name = str_replace('KS','xx', $name);
$name = str_replace('s','5', $name);
$name = str_replace('S','5', $name);
$name = str_replace('t','7', $name);
$name = str_replace('T','7', $name);
$name = str_replace('ö','oe', $name);
$name = str_replace('Ö','OE', $name);
$name = str_replace('ä','ae', $name);
$name = str_replace('Ä','AE', $name);
return $name;
}

Men det hade tyvärr inte funkat för mitt ändamål ändå^^
Så switchar it is...


Emmos snis riyi emmos snis

Rojk
Visningsbild
P 36 Huddinge "Rojk" 3 576 inlägg
0

Svar till Tvillingen [Gå till post]:
*hosthost*

http://svn.hpdev.se/

;)

Exactly which part of B flat you don't understand!?

Anonymmedlem
Visningsbild
Bitter 9001 inlägg
0

Svar till Tvillingen [Gå till post]:
Nä, den där koden är gammal.


http://svn.hpdev.se/filedetails.php?repname=Hamsterpaj&path=/application/helpers/your_name_helper.php
och
http://svn.hpdev.se/filedetails.php?repname=Hamsterpaj&path=/application/controllers/mattan.php
och
http://svn.hpdev.se/filedetails.php?repname=Hamsterpaj&path=/application/views/mattan/your_name.php

Är den aktuella koden på det ni ser. :)
Nathanael
Visningsbild
P 32 Hjälte 4 322 inlägg
Trådskapare
0

Svar till moodh [Gå till post]:
Tack - nu behöver jag bara ränka bokstäverna, och köra lite mer kod, så är det klart:D

Emmos snis riyi emmos snis

cower
Visningsbild
P 44 Lund Hjälte 1 042 inlägg
0
Svar till Nathanael [Gå till post]:
Det finns en funktion som gör exakt det du försöker göra: strtr(), se http://se2.php.net/manual/en/function.strtr.php
Det är den andra varianten som är intressand, dvs den som tar en array.

Nathanael
Visningsbild
P 32 Hjälte 4 322 inlägg
Trådskapare
0

Svar till cower [Gå till post]:
Ah, använde mig av case och str_replace:
Ett stycke PHP-kod:

for ($i=0; $i<=$num_char; $i++)
{
$ninjaname[$i] = $arr[$i];
$ninjaname[$i] = strtolower($ninjaname[$i]);
switch ($ninjaname[$i])
{
case 'a':
$ninjaname[$i] = str_replace('a', 'ka', $ninjaname[$i]);
break;
case 'b':
$ninjaname[$i] = str_replace('b', 'zu', $ninjaname[$i]);
break;
case 'c':
$ninjaname[$i] = str_replace('c', 'mi', $ninjaname[$i]);
break;
case 'd':
$ninjaname[$i] = str_replace('d', 'te', $ninjaname[$i]);
break;
case 'e':
$ninjaname[$i] = str_replace('e', 'ku', $ninjaname[$i]);
break;
case 'f':
$ninjaname[$i] = str_replace('f', 'lu', $ninjaname[$i]);
break;
case 'g':
$ninjaname[$i] = str_replace('g', 'ji', $ninjaname[$i]);
break;
case 'h':
$ninjaname[$i] = str_replace('h', 'ri', $ninjaname[$i]);
break;
case 'i':
$ninjaname[$i] = str_replace('i', 'ki', $ninjaname[$i]);
break;
case 'j':
$ninjaname[$i] = str_replace('j', 'zu', $ninjaname[$i]);
break;
case 'k':
$ninjaname[$i] = str_replace('k', 'me', $ninjaname[$i]);
break;
case 'l':
$ninjaname[$i] = str_replace('l', 'ta', $ninjaname[$i]);
break;
case 'm':
$ninjaname[$i] = str_replace('m', 'rin', $ninjaname[$i]);
break;
case 'n':
$ninjaname[$i] = str_replace('n', 'to', $ninjaname[$i]);
break;
case 'o':
$ninjaname[$i] = str_replace('o', 'mo', $ninjaname[$i]);
break;
case 'p':
$ninjaname[$i] = str_replace('p', 'no', $ninjaname[$i]);
break;
case 'q':
$ninjaname[$i] = str_replace('q', 'ke', $ninjaname[$i]);
break;
case 'r':
$ninjaname[$i] = str_replace('r', 'shi', $ninjaname[$i]);
break;
case 's':
$ninjaname[$i] = str_replace('s', 'ari', $ninjaname[$i]);
break;
case 't':
$ninjaname[$i] = str_replace('t', 'chi', $ninjaname[$i]);
break;
case 'u':
$ninjaname[$i] = str_replace('u', 'do', $ninjaname[$i]);
break;
case 'v':
$ninjaname[$i] = str_replace('v', 'ru', $ninjaname[$i]);
break;
case 'w':
$ninjaname[$i] = str_replace('w', 'mei', $ninjaname[$i]);
break;
case 'x':
$ninjaname[$i] = str_replace('x', 'na', $ninjaname[$i]);
break;
case 'y':
$ninjaname[$i] = str_replace('y', 'fu', $ninjaname[$i]);
break;
case 'z':
$ninjaname[$i] = str_replace('z', 'zi', $ninjaname[$i]);
break;
case 'å':
$ninjaname[$i] = str_replace('å', 'ri', $ninjaname[$i]);
break;
case 'ä':
$ninjaname[$i] = str_replace('ä', 'na', $ninjaname[$i]);
break;
case 'ö':
$ninjaname[$i] = str_replace('ö', 'ku', $ninjaname[$i]);
break;
case ' ':
$ninjaname[$i] = str_replace(' ', ' ', $ninjaname[$i]);
break;
case '-':
$ninjaname[$i] = str_replace('-', '-', $ninjaname[$i]);
break;
}
}
echo "<div class='holder'><h1>";
for ($i=0; $i<=$num_char; $i++)
{

echo $ninjaname[$i];
if ($i==1){ echo "-"; }
}
echo "</h1></div>";
}



:(

Emmos snis riyi emmos snis

cower
Visningsbild
P 44 Lund Hjälte 1 042 inlägg
0
Svar till Nathanael [Gå till post]:
... Du är väl medveten om att str_replace() är fullständigt onödigt i din kod? Du kan lika gärna ersätta de anropen med bara strängen du vill byta ut till. Iallafall så blir alltihop bara en kodrad om du använder strtr() istället.

Nathanael
Visningsbild
P 32 Hjälte 4 322 inlägg
Trådskapare
0

Svar till cower [Gå till post]:
Jo, men när jag skrev den visste jag inte om strtr()
:(

Menmen - om jag hade funnit större nytta av det, hade jag skrivit om det:D

Emmos snis riyi emmos snis


Forum » Datorer & IT » Webbutveckling & Programmering » Php - göra egen namnfunktion

Ansvariga ordningsvakter:

Användare som läser i den här tråden just nu

1 utloggad

Skriv ett nytt inlägg

Hej! Innan du skriver om ett potentiellt problem så vill vi påminna dig om att du faktiskt inte är ensam. Du är inte onormal och världen kommer inte att gå under, vi lovar! Så slappna av och gilla livet i några minuter - känns det fortfarande hemskt? Skriv gärna ner dina tankar och frågor, vi älskar att hjälpa just dig!

Den här tråden är äldre än Rojks drömtjej!

Det senaste inlägget i den här tråden skrevs för över tre månader sedan. Är du säker på att du vill återuppliva diskussionen? Har du något vettigt att tillföra eller passar din fråga i en ny tråd? Onödiga återupplivningar kommer att låsas så tänk efter en extra gång!

Hjälp

Det här är en hjälpruta

Här får du korta tips och förklaringar om forumet. Välj kapitel i rullningslisten här ovanför.

Rutan uppdateras automagiskt

När du använder funktioner i forumet så visas bra tips här.


Annons
Annons
Annons
Annons