Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Personaliznacja tekstu, Czyli jak uniknać 'widziałeś/aś' ?
Mery
post
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 18.01.2004
Skąd: Ostrów Wlkp.

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


Mam taki problem. Nie wiem jak zrobic taki skrypcik, ktory personalizowal by jakis tekst w zaleznosci od plci czytajacego.

Mozna by pisac tekst np w taki sposob:

Kod
Czy widział[eś/aś] ten dom?


i jakis sprypcik na podstawie chyba najlepiej wyrazenia regularnego zamienial by ten nawias [eś/aś] na eś jesli czytajacy to M lub aś jesli czytajacy do K.

Niestety na wyrazeniach regularnych sie nie znam sad.gif

Czy ktos wie jak takie cos napisac questionmark.gif
Go to the top of the page
+Quote Post
vala
post
Post #2





Grupa: Zarejestrowani
Postów: 123
Pomógł: 0
Dołączył: 12.01.2005

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


pisz w formie bezosobowej:)


--------------------
Warsztat: Easy PHP 1.7:Apache 1.3.27|PHP 4.3.3|PHPMYADMIn 2.5.3|MYSQL 4.0.15
Go to the top of the page
+Quote Post
Morek
post
Post #3





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 28.05.2005

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


można zrobić skrypt ktory "na dzień dobry" zadawałby pytanie pan jest czy pani smile.gif a potem tego używał ale szczerze nie widze powodu... zabawa chyba nie jest warta świeczek.

Problem również zniknie gdy będzie logowanie na strone, ale tylko dla userów.

Lub tak jak mówi Vala pisz bezosobowo
Go to the top of the page
+Quote Post
kicaj
post
Post #4





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

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


Jesli masz logowanie (konta uzytkownikow itp) to tam ustaw wymagane pole na plec. Pozniej bedziesz odpowiednim wyrazeniem strosowal 'widzial[as|es]'. Zakladajac ze pierwsza czesc jest dla chlopcow, a druga dla dziewczat:)

P.S. W podobnym stylu jak stosuje WikiMedia (np. http://wiki.php.pl) tyle, ze do linkow.


--------------------
PHP Developer

"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola
Go to the top of the page
+Quote Post
Mery
post
Post #5





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 18.01.2004
Skąd: Ostrów Wlkp.

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


To wlasnie wiem, chodzi mi tylko o to odpowiednie wyrazenie biggrin.gif

Plec uzytkownika mam, teraz tylko trzeba wlasnie jakos zamienic koncowke na meska lub zenska i nie wiem jak to zrobic sadsmiley02.gif
Go to the top of the page
+Quote Post
vala
post
Post #6





Grupa: Zarejestrowani
Postów: 123
Pomógł: 0
Dołączył: 12.01.2005

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


oznacz sobie string, ktory ma zamieniac w jakis specjalny sposob np:
<plec>

czyli bedzie cos takiego napisa<plec>(ł/ła)
i mozesz zastosowac preg_replace lub str_replace
ja bym info o plci wrzucil do sesji czy ciastek i na podstawie tego zamienial...


--------------------
Warsztat: Easy PHP 1.7:Apache 1.3.27|PHP 4.3.3|PHPMYADMIn 2.5.3|MYSQL 4.0.15
Go to the top of the page
+Quote Post
Mery
post
Post #7





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 18.01.2004
Skąd: Ostrów Wlkp.

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


Zrobilem takie cos, dziala ale tylko wtedy gdy w tekscie jest tylko jeden raz forma osobowa:

  1. <?
  2. function personalizuj($string, $plec){  
  3.  
  4.  preg_match('/<(.*)!(.*)>/',$string, $koncowka);
  5.  
  6.  $wynik = preg_replace('/<(.*)!(.*)>/',$koncowka[$plec],$string);
  7.  
  8.  return $wynik;
  9.  
  10. }
  11.  
  12. $string = 'Czy chciał<byś!abyś> mieć taki dom?';
  13.  
  14.  
  15. echo personalizuj($string, 1);
  16.  
  17. ?>


jesli parametr plec wynosi 1 to daje pierwsza koncowke (meska) a jesli 2 to daje 2 koncowke. Niestety totanie nie dziala jesli w tekscie musi kilka razy zamienic koncowki.

Nie wiem w jaki sposob wyseparowac te koncowki z tekstu sadsmiley02.gif

Ma ktos jakis pomysl jak by to mialo wygladac questionmark.gif
Go to the top of the page
+Quote Post
tiraeth
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

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


to zamień preg_match na preg_match_all i potem zrób to samo ale w pętli smile.gif

poza tym lepiej zrobić taki string:
Kod
Czy chciał<!a>być mieć taki dom?


A spróbuj z tym wyrazem: mógłbyś
Go to the top of the page
+Quote Post
Mery
post
Post #9





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 18.01.2004
Skąd: Ostrów Wlkp.

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


Nie bardzo kumam gdzie tu wcisnac petle, jakies dziwne rzeczy mi wychodza.

Mógłbyś napisac kod jak to powinno wygladac questionmark.gif
Go to the top of the page
+Quote Post
tiraeth
post
Post #10





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

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


Proszę bardzo smile.gif Gotowa funkcja:
  1. <?php
  2. function personalizuj($string, $plec)
  3. {
  4.  $wzor = '/<([a-z]{0,})!([a-z]{0,})>/';
  5.  
  6.  if(preg_match_all($wzor, $string, $koncowki))
  7.  {
  8. $wynik = str_replace($koncowki[0], $koncowki[$plec], $string);
  9.  }
  10.  
  11.  return $wynik;
  12. }
  13. ?>


Zmieniłem trochę wyrażenie regularne. I zamieniamy nie preg_replace'm tylko str_replace'm smile.gif
Go to the top of the page
+Quote Post
matid
post
Post #11





Grupa: Zarejestrowani
Postów: 362
Pomógł: 0
Dołączył: 18.02.2004
Skąd: Knurów

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


Niestety, przy polskich znakach [a-z] chyba nie przejdzie, a przy kodowaniu np utf-8 na 100% będą błędy. A tak wogóle, to po co tak komplikować tę funkcję, jakieś nie potrzebne preg_match_all, nie rozumiem tego. Nie można tak:

Coś się kolorowanie sypie, ale kod dziala:
Kod
<?php

    function personalize( $sString, $iGender )
    {
        return preg_replace( '/\<(\S*)\!(\S*)\>/', '\\' . (int) $iGender, (string) $sString );
    }
    
    $sString = 'Czy chciał<byś!abyś> mieć taki dom? Czy m<ógł!ogła>byś kupić mleko?';
    
    echo '<strong>Mężczyzna:</strong></br />';
    echo personalize( $sString, 1 );
    echo '<br /><strong>Kobieta:</strong><br />';
    echo personalize( $sString, 2 );
    
?>


Ten post edytował matid 21.07.2005, 13:03:28
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 Aktualny czas: 19.08.2025 - 07:38