|
Odmiana imion w formularzach
|
| mjeanne |
Dodany dnia 14.04.2009 13:35:00
|

Przedszkolak

Postów: 3
Data rejestracji: 14.04.2009 13:16
|
Witam,
Jestem pocz?tkuj?c? w php wi?c prosi?abym o prostot? odpowiedzi je?eli to mo?liwe ;).
Otó? próbuj? napisa? co?, co pewnie nurtuje nie jednego (nawet zaawansowanego) programist?.
Chcia?abym bardzo, aby inteligenty formularz by? w stanie odmienia? imi? w wo?aczu.
np. je?eli osoba w formularzu , w polu " imie" napisa?a " Kasia", to chc? aby e-mail wysy?any przez f-cje mail() mia? form? powitaln?
"Droga Pani Kasiu!"
My?l?, ?e nie jest to bardzo trudne do zrealizowania tylko nie potrafi? wybra? i u?y? do tego odpowiedniej funkcji. :( w pliku php to miejsce gdzie ma byc nowa forma, oznaczy?am przez [?????]
Formularz ju? na pewno dobrze odró?nia czy e-mail ma mie? nag?ówek "pan" czy "pani". Jednak nie potrafi? ju? wi?cej tego przerobi?.
Tu podaj? bardzo uproszczon? wersj? formularza (pole e-mail oraz imie) oraz php zajmuj?ce si? samym wys?aniem mail() i tym nag?ówkiem.
Nie wiem jak to zrobi? ?eby utworzy? now? zmienn? ze zmienion? ko?cówk? ze strony informatycznej. Mog? natomiast wyt?umaczy? od strony polonistycznej i udowodni? ?e to wcale nie takie trudne.
1. Podstawowy podzia? deklinacyjny
a) imiona ?e?skie
b) imiona m?skie
add a) je?eli ?e?skie imi? ma ko?cówk? podan? ni?ej, wymieni si? na
ba - bo
da - do
fa - fo
?a - ?o
ma - mo
na - no
pa - po
ra - ro
sa - so
ta - to
wa - wo
za - zo
ga - go
cha - cho
ha -ho
ka - ko
rza - rzo
?a - ?o
d?a - d?o
cza - czo
ca - co
sza - szo
ia - io
ja - jo
ka - ko
cia - ciu
la - lu
nia - niu
sia - siu
dzia - dziu
zia - ziu
add b) je?eli meskie imi? ma ko?cówk? podan? ni?ej, wymieni si? na
b - bie
d - dzie
f - fie
? - le
m - mie
n - nie
p - pie
r - rze
s - sie
t - cie
w - wie
z - zie
g - gu
ch - chu
h - hu
ek - ku
k - ku
rz - rzu
?a - ?u
d? - d?
cz - czu
niec - ?cze
rzec - rcze
piec - pcze
ec - cze
sz - szu
j - ju
ek - ku
k - ku
? - ciu
l - lu
? - niu
? - siu
d? - dziu
? - ziu
Mo?na sobie popodstawia? imiona je?eli nie wierzycie ;) np. Dagmara - Dagmaro,Piotr - Piotrze W?adys?aw - W?adys?awie ...
Licz? na jakie? odpowiedzi :) By? mo?e nie jest to rzecz bardzo wa?na w formularzu ale na | pewno ciekawa i je?eli idzie j? wykona? to dlaczego nie??
Formularz:
<html>
<head>
<title>Formularz</title>
</head>
<body>
<div>
<form action="result.php" method="post">
<table>
<tr>
<td>Twoje imi? <sup>(*)</sup> <input type="text" name="imie" size="28" maxlength="20"></td></tr>
<tr><td>Twój e-mail <sup>(*)</sup> <input type="text" name="email" size="50" maxlength="50"></td></tr>
</table>
<p class="center">
<input type="submit" value="Wy?lij"><input type="hidden" name="wyslij_formularz" value="tak">
<input type="reset" value="Wyczy?? formularz">
</p>
</form>
<p class="small"><sup>(*)</sup> - Pole wymagane</p>
</div>
</body>
</html>
Kliknij i zaczekaj na załadowanie kodu ...
strona wynikowa php + wysy?anie e-maila :result.php
<?php
$imie=$_POST['imie'];
$email=$_POST['email'];
$do_kli = $email;
$tytul_kli = 'Zamówienie';
$headers .= "MIME-Version: 1.0 \n";
$headers .= "Content-type: text/html; charset=utf-8\n";
$headers .= "Content-Transfer-Encoding: quoted-printable\n";
$headers .= "From: www.mojastrona.pl <>\r\n";
$headers .= "Reply-to: \r\n";
/* tresc wysylana do kobiety*/
$tresc_klia = "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<html>
<head>
<title>Zamówienie</title>
</head>
<body>
<p>Dzie? dobry, Pani [?????] !</p>
</body>
</html>";
/*tresc wysylana do mezczyzny*/
$tresc_kli = "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<html>
<head>
<title>Zamówienie</title>
</head>
<body>
<p>Dzie? dobry, Panie [?????] !</p>
</body>
</html>";
?>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Wynik</title>
</head>
<body>
<?php
if( empty($imie) || empty($email))
{
echo 'Brak danych<br/>';
}
else
{
if(preg_match("/.*a$/", $imie)) // jesli wysyla do kobiety
{
mail($do_kli, $tytul_kli, $tresc_klia, $headers);
echo '<p>Dzi?kuj? za z?o?enie zamówienia.<br/>Na podany e-mail zostan? wys?ane wszystkie informacje zebrane w formularzu</p>';
}
else
{
mail($do_kli, $tytul_kli, $tresc_kli, $headers);
echo '<p>Dzi?kuj? za z?o?enie zamówienia.<br/>Na podany e-mail zostan? wys?ane wszystkie informacje zebrane w formularzu</p>';
}
}
?>
</body>
</html>
Kliknij i zaczekaj na załadowanie kodu ...
Wiadomo?? doklejona:
Dodam jeszcze ?e wydaje mi si?, ?e przy tworzeniu nowych form, b?dzie potrzeba ta sama funkcja preg_match co przy wybieraniu czy mail ma by? wysy?any do m??czyzny czy do kobiety, czyli
if(preg_match("/.*a$/", $imie))
{
// i tu funkcja która pozwoi?a by na utworzenie nowej formy imienia ?e?skiego wg. //zamian jakie s? mo?liwe w ptk a)}
else
{// a tu ta sama dla imion m?skich - ptk b) }
Kliknij i zaczekaj na załadowanie kodu ...
Chocia? nie jestem pewna.
Mam nadziej?, ?e w miar? jasno wyt?umaczy?am o co mi chodzi.
Edytowane przez Pieka dnia 15.04.2009 09:11:36
|
| |
|
|
| W?cibski Go?? |
Dodany dnia 25.10.2025 21:43:54
|
Pan Kontekstualny
Postów: n^x
Data rejestracji: Zawsze
|
|
| IP: localhost |
|
|
| hoopak |
Dodany dnia 14.04.2009 14:30:20
|

Bywalec

Postów: 639 Pomógł: 21
v7.02.04 Data rejestracji: 05.02.2008 21:16
|
Skoro chcesz tylko stworzy? formularz, to nie widz? zwi?zku z PF, chyba ?e si? myl??
Edytowane przez hoopak dnia 14.04.2009 14:36:47
|
| |
|
|
| mjeanne |
Dodany dnia 14.04.2009 14:49:04
|

Przedszkolak

Postów: 3
Data rejestracji: 14.04.2009 13:16
|
Teoretycznie nie. Ale tak naprawd? takie co? te? ma miejsce na portalach itp. Je?eli si? logujesz np. na NK (czy gdziekolwiek indziej) dostajesz z regu?y komunikat "Witaj, [imie/nick]"
Troch? mnie dra?ni Komunikat "Witaj Maria!" ... Skoro mog?oby by? "Witaj Mario". No i dlatego te? s?dz?, skoro (pewnie) idzie to zastosowa? np. na portalach, w których si? u?ywa php , to w formularzu do którego te? u?ywam php tak?e mog?abym tego u?y? w ten sam sposób |
| |
|
|
| DJPromo |
Dodany dnia 14.04.2009 15:16:17
|

Bywalec

Postów: 630 Pomógł: 41
v7.02.07 Data rejestracji: 13.06.2006 18:51
|
My?l?, ?e ten skrypt cie zadowoli dostosowa? pod siebie. Masz warunki w sumie wi?kszo?? napisanych wystarczy dopisa? reszt?
Copyright (c) 2007 Cypriano (www.cypriano.pl)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
.
.
function wolacz ($imie) {
switch($imie)
{
case substr($imie,-2,2)=="ni":
return "1".$imie;
case substr($imie,-2,2)=="e?":
return "1".substr($imie,0,-2)."le";
case substr($imie,-2,2)=="tr":
return "1".$imie."ze";
case substr($imie,-2,2)=="a?":
return "1".substr($imie,0,-1)."le";
case in_array(substr($imie,-2,2),array("it","rt")):
return "1".substr($imie,0,-1)."cie";
case substr($imie,-4,4)=="ciek":
return "1".substr($imie,0,-4)."?ku";
case substr($imie,-4,4)=="siek":
return "1".substr($imie,0,-4)."?ku";
case substr($imie,-3,3)=="per":
return "1".substr($imie,0,-2)."rze";
case substr($imie,-2,2)=="ek":
return "1".substr($imie,0,-2)."ku";
case substr($imie,-2,2)=="st":
return "1".substr($imie,0,-2)."?cie";
case in_array(substr($imie,-3,3),array("cja","ria","lia","dia","wia","fia")) || in_array(substr($imie,-4,4),array("iela","bela","zula")):
return "2".substr($imie,0,-1)."o";
case in_array(substr($imie,-2,2),array("ja","ia","la")) :
return "2".substr($imie,0,-1)."u";
case substr($imie,-2,2)=="ba":
return "1".substr($imie,0,-1)."o";
case in_array(substr($imie,-1,1),array("n","f","m","w","p","s","b")):
return "1".$imie."ie";
case in_array(substr($imie,-1,1),array("g","h","j","k","l","z")):
return "1".$imie."u";
case substr($imie,-3,3)=="der":
return "1".substr($imie,0,-2)."rze";
case substr($imie,-1,1)=="r":
return "1".$imie."ze";
case substr($imie,-1,1)=="d":
return "1".$imie."zie";
case substr($imie,-1,1)=="a":
return "2".substr($imie,0,-1)."o";
case substr($imie,-1,1)=="y":
return "1".$imie;
default:
return "0".$imie;
}
}
function zamien($imie)
{
return "".(substr(wolacz(strtolower($imie)),0,1)=="1")? "Panie ".ucfirst(substr(wolacz(strtolower($imie)),1)):( (substr(wolacz(strtolower($imie)),0,1)=="2")? "Pani ".ucfirst(substr(wolacz(strtolower($imie)),1)):" ".ucfirst(substr(wolacz(strtolower($imie)),1)));
}
Kliknij i zaczekaj na załadowanie kodu ...
Edytowane przez DJPromo dnia 14.04.2009 16:18:17
Pomog?em Kliknij Pomóg?
?ycie to chwila zbyt krótka aby móc .... ?ycie to chwila / trzeba patrze? i podziwia?  
|
| |
|
|
| kefirek |
Dodany dnia 14.04.2009 16:01:59
|

Zaawansowany

Postów: 1191 Pomógł: 418 Ostrzeżeń: 1
v6.00.xxx Data rejestracji: 06.04.2008 21:59
|
Mo?na spróbowa? co? w ten desen
Robisz tablice z tym ko?cówkami i sprawdzasz dwie i trzy odstanie litery czy s? w tablicy jak tak dodajesz t? warto?? co jest w tablicy.
Napisa?em taki prosty kod
Liczysz ile imi? ma liter
Potem w p?tli sprawdzasz czy ko?cówka imienia np. Kasia czyli
Ko?cówka sia jest w tablicy je?li nie to p?tla wykonuje si? dale i sprawdza czy si jest w tablicy jak tak to dopisujesz ko?cówk? z tablicy do imienia czyli jak np. w tablicy istniej ko?cówka sia tak jak w tym przypadku to do Ka do??czasz siu z tablicy.
Poprawno?? dzia?ania trzeba sprawdzi? na wi?kszej liczbie imion
$imie = 'Kasia';
$koncowki = array(
'sia' => 'siu'
);
$i = strlen($imie) - 4;
while ($i < strlen($imie) - 2) {
$i++;
if(array_key_exists(substr($imie, $i), $koncowki)) echo substr($imie, 0, $i).$koncowki[substr($imie, $i)] ; break;
}
Edytowane przez kefirek dnia 14.04.2009 16:19:33
|
| |
|
|
| mjeanne |
Dodany dnia 15.04.2009 07:49:04
|

Przedszkolak

Postów: 3
Data rejestracji: 14.04.2009 13:16
|
@ DJPromo : wielkie dzi?ki za linka! szuka?am jakiego? gotowca i nic wcze?niej nie znalaz?am
@ Kefirek : te? dzi?kuj? za kod. My?l? ?e skorzystam jednak z tego gotowego, je?eli rzeczywi?cie dzia?a :)
Dobra, po paru dniach stwierdziam ?e sobie generalnie poradzi?am i kod dzia?a...
Jednak nie reaguje - nie widzie? czemu , gdy na ko?cu s? imienia s? litery "?" "?" "?" "?"
poni?ej podaje troszk? edytowan? do moich potrzeb wersj? formularza
Chodzi mi g?ównie o 14 pierwszych wersów pod switch($imie)
<?php
$imie=$_POST['imie'];
$email=$_POST['email'];
$do_kli = $email;
$tytul_kli = 'Zamówienie';
$headers .= "MIME-Version: 1.0 \n";
$headers .= "Content-type: text/html; charset=utf-8\n";
$headers .= "Content-Transfer-Encoding: quoted-printable\n";
$headers .= "From: http://www.mojast...2;n";
function wolacz ($imie) {
switch($imie)
{
case substr($imie,-4,4)== "rze?;":
return "1".$imie."rle";
case substr($imie,-2,2)== "e?;":
return "1".substr($imie,0,-2)."le";
case substr($imie,-1,1)== "?;":
return "1".substr($imie,0,-1)."le";
case substr($imie,-2,2)== "e?;":
return "1".substr($imie,0,-2)."niu";
case substr($imie,-1,1)== "?;":
return "1".substr($imie,0,-1)."niu";
case substr($imie,-1,1)== "?;":
return "1".substr($imie,0,-1)."siu";
case substr($imie,-1,1)== "?;":
return "1".substr($imie,0,-1)."ziu";
case substr($imie,-1,1)=="l":
return "1".$imie."u";
case substr($imie,-2,2)=="ch":
return "1".$imie."u";
case substr($imie,-2,2)=="rz":
return "1".$imie."u";
case substr($imie,-4,4)=="niec":
return "1".substr($imie,0,-4)."?cze";
case substr($imie,-4,4)=="rzec":
return "1".substr($imie,0,-4)."rcze";
case substr($imie,-2,2)=="ec":
return "1".substr($imie,0,-2)."cze";
case substr($imie,-2,2)=="ni":
return "1".$imie;
case substr($imie,-2,2)=="tr":
return "1".$imie."ze";
case in_array(substr($imie,-2,2),array("it","rt")):
return "1".substr($imie,0,-1)."cie";
case substr($imie,-4,4)=="ciek":
return "1".substr($imie,0,-4)."?ku";
case substr($imie,-4,4)=="siek":
return "1".substr($imie,0,-4)."?ku";
case substr($imie,-3,3)=="per":
return "1".substr($imie,0,-2)."rze";
case substr($imie,-2,2)=="ek":
return "1".substr($imie,0,-2)."ku";
case substr($imie,-2,2)=="st":
return "1".substr($imie,0,-2)."?cie";
case in_array(substr($imie,-3,3),array("cja","ria","lia","dia","wia","fia")) || in_array(substr($imie,-4,4),array("iela","bela","zula")):
return "2".substr($imie,0,-1)."o";
case in_array(substr($imie,-2,2),array("ja","ia","la")) :
return "2".substr($imie,0,-1)."u";
case substr($imie,-2,2)=="ba":
return "1".substr($imie,0,-1)."o";
case in_array(substr($imie,-1,1),array("n","f","m","w","p","s","b")):
return "1".$imie."ie";
case in_array(substr($imie,-1,1),array("g","h","j","k","l","z", "?" )):
return "1".$imie."u";
case substr($imie,-3,3)=="der":
return "1".substr($imie,0,-2)."rze";
case substr($imie,-1,1)=="r":
return "1".$imie."ze";
case substr($imie,-1,1)=="d":
return "1".$imie."zie";
case substr($imie,-1,1)=="a":
return "2".substr($imie,0,-1)."o";
case substr($imie,-1,1)=="y":
return "1".$imie;
default:
return "0".$imie;
}
}
function zamien($imie)
{
return "".(substr(wolacz(strtolower($imie)),0,1)=="1")? "Panie ".ucfirst(substr(wolacz(strtolower($imie)),1)):( (substr(wolacz(strtolower($imie)),0,1)=="2")? "Pani ".ucfirst(substr(wolacz(strtolower($imie)),1)):" ".ucfirst(substr(wolacz(strtolower($imie)),1)));
}
$imie2 = ucfirst(substr(wolacz(strtolower($imie)),1));
/* tresc wysylana do kobiety*/
$tresc_klia
= "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<html>
<head>
<title>Zamówienie</title>
</head>
<body>
<p>Dzie? dobry, Pani $imie2!</p>
</body>
</html>"
;
/*tresc wysylana do mezczyzny*/
$tresc_kli
= "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<html>
<head>
<title>Zamówienie</title>
</head>
<body>
<p>Dzie? dobry, Panie !</p>
</body>
</html>"
;
?>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Wynik</title>
</head>
<body>
<?php
if( empty($imie) || empty($email))
{
echo 'Brak danych<br/>';
}
else
{
if(preg_match("/.*a$/", $imie)) // jesli wysyla do kobiety
{
mail($do_kli, $tytul_kli, $tresc_klia, $headers);
echo 'Pani ';
echo zamien($imie);
echo '<br/>';
echo '<p>Dzi?kuj? za z?o?enie zamówienia.<br/>Na podany e-mail zostan? wys?ane wszystkie informacje zebrane w formularzu</p>';
}
else
{
mail($do_kli, $tytul_kli, $tresc_kli, $headers);
echo 'Panie';
echo zamien($imie);
echo '<br/>';
echo '<p>Dzi?kuj? za z?o?enie zamówienia.<br/>Na podany e-mail zostan? wys?ane wszystkie informacje zebrane w formularzu</p>';
}
}
?>
</body>
</html>Kliknij i zaczekaj na załadowanie kodu ...
Mo?e to jest wina serwera na którym trzymam pliki ?? Czy kto? mó?by sprawdzi?, czy te? mu nie reaguje ? np. z imieniem "Pawe?" "Micha?" "Sta?" itp ? (?, ?, ?, ?)
Wiadomo?? doklejona:
PS. Mam nadziej?, ?e nie nadu?ywam Waszej ?yczliwo?ci :)
Edytowane przez mjeanne dnia 19.04.2009 16:04:40
|
| |
|