Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Podmiana liter w zmiennej
Forum PHP.pl > Forum > PHP
kouczan
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).
phpuser88
  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
gino
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.
kouczan
Dziękuję za podpowiedź.
gino
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;
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.