Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Podmiana liter w zmiennej
kouczan
post 5.04.2022, 06:39:17
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 5.04.2022

Ostrzeżenie: (0%)
-----


Dzień dobry wszystkim.
Mam pytanie odnośnie poniższego kodu.

  1. $female = false;
  2. if( isset( $row['sex'] ) )
  3. {
  4. $female = $row['sex'] == 'F';
  5. }
  6. else
  7. {
  8. global $people_table;
  9. $sql = "SELECT sex FROM `{$people_table}` WHERE `personID` = '{$row['personID']}'";
  10. $mresult = tng_query($sql);
  11. $mrow = tng_fetch_assoc( $mresult );
  12. tng_free_result( $mresult );
  13. if( ! empty( $mrow ) )
  14. {
  15. $female = $mrow['sex'] == 'F';
  16. }
  17. }
  18. // If it is a female we will see if married name munging is required
  19. if( $female )
  20. {
  21. global $people_table, $families_table;
  22. $marriedType = '1';
  23. $extraWhere = '';
  24. if( $marriedType == '1')
  25. {
  26. $extraWhere .= " AND NOT (f.marrtype = '' OR f.marrtype IS NULL)";
  27. }
  28. $personID = ucfirst( $row['personID'] );
  29. $sql = "SELECT p.`lastname`, p.`lnprefix`
  30. FROM `{$families_table}` AS f
  31. LEFT JOIN `{$people_table}` AS p
  32. ON p.`PersonID` = f.`husband`
  33. WHERE f.`wife` = '{$personID}' {$extraWhere}
  34. ORDER BY f.`wifeorder` DESC
  35. LIMIT 0,1";
  36. $mresult = tng_query($sql);
  37. $mrow = tng_fetch_assoc( $mresult );
  38. tng_free_result( $mresult );
  39. if( ! empty( $mrow ) )
  40. {
  41. $mName = preg_replace("/\"/", """,$mrow['lastname']);
  42. $mprefix = preg_replace("/\"/", """,$mrow['lnprefix']);
  43. $mName = trim( $mprefix." ".$mName );
  44. if( $tngconfig['ucsurnames'] ) $mName = tng_strtoupper($mName);
  45. $lastname = "{$mName} ({$text['nee']} {$lastname})";
  46. }
  47. }


Jest to fragment strony internetowej poświęconej genealogii rodzinnej. W domyśle zamienia on wyświetlanie nazwiska zamężnej kobiety. Zamienia panieńskie nazwisko kobiety na nazwisko męża, a w nawiasie dodaje jej nazwisko rodowe. Czyli mając wpis w tabeli SQL „Anna Nowak”, która wyszła za mąż za Jana Kowalskiego, zmienia on wyświetlanie na „Anna Kowalski (z d. Nowak)”.
Czy ten kod da się zmodyfikować w ten sposób, żeby sprawdzał ostatnie dwie litery w nazwisku męża i jeżeli jest to „ki” to podmieniał by to „ka”. Chodzi o to, że w przypadku nazwisk kończących się na „ki” kod zostawia to tak jak jest i mamy takie kwiatki jak powyżej (czyli Anna Kowalski a nie Kowalska).
Go to the top of the page
+Quote Post
phpuser88
post 5.04.2022, 09:41:45
Post #2





Grupa: Zarejestrowani
Postów: 66
Pomógł: 1
Dołączył: 4.05.2019
Skąd: PHP5.6

Ostrzeżenie: (0%)
-----


  1. if($female){
  2. $lastname= str_replace("ki","ka", $lastname);
  3. }

Chyba to jest najprostszym rozwiązaniem.

edit do postu poniżej:
no tak... dwie ostatnie litery. sciana.gif

Ten post edytował phpuser88 5.04.2022, 09:47:35
Go to the top of the page
+Quote Post
gino
post 5.04.2022, 09:45:10
Post #3





Grupa: Zarejestrowani
Postów: 324
Pomógł: 52
Dołączył: 18.02.2008

Ostrzeżenie: (0%)
-----


najprostszym, ale nie poprawnym np. nazwisko Kiliński zmieni na Kalińka

Kod
$male = 'Kowalski';
$female = substr($male, -2, 2) == 'ki'? str_replace(substr($male, -2,2), 'ka', $male): $male;

A ty sobie go dostosuj do swojego kodu.
Go to the top of the page
+Quote Post
kouczan
post 5.04.2022, 13:08:54
Post #4





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 5.04.2022

Ostrzeżenie: (0%)
-----


Dziękuję za podpowiedź.
Go to the top of the page
+Quote Post
gino
post 6.04.2022, 06:54:12
Post #5





Grupa: Zarejestrowani
Postów: 324
Pomógł: 52
Dołączył: 18.02.2008

Ostrzeżenie: (0%)
-----


Dzisiaj zobaczyłem, że skopiowały się śmieci zamiast poprawnego kodu.

Kod
$female = substr($male, -2, 2) == 'ki'? substr($male, 0, strlen($male)-2).'ka': $male;
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.06.2025 - 02:52