Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]str_replace nie działa poprawnie na tablicy, jak wykonać?
casperii
post 11.07.2019, 00:47:49
Post #1





Grupa: Zarejestrowani
Postów: 590
Pomógł: 28
Dołączył: 14.08.2014

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


Panowie o co chodzi , próbuje przy pomocy str_replace podmieniać ciąg znaków niestety zbyt dosłownie mi te ciągi zmienia smile.gif

  1. $stare = array("1","11","12");
  2. //$stare = array(1,11,12);
  3. $zamien = array('jeden','jedenascie','dwanascie');
  4.  
  5. str_replace($stare, $zamien, $row['numerek']);


bo jeżeli mam numerek 11 to zamiast jedenascie pokazuje mi jedenjeden sad.gif

Czy da się w jakiś inny sposób to wykonać ?
Go to the top of the page
+Quote Post
dublinka
post 11.07.2019, 06:52:33
Post #2





Grupa: Zarejestrowani
Postów: 163
Pomógł: 18
Dołączył: 22.02.2008

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


str_replace tak nie zadziała na tablicach.

  1. <?php
  2. $arr = array(
  3. "1" => "jeden",
  4. "11" => "jedenascie",
  5. "111" => "sto jedenaście",
  6. "1111" => "tysiąc sto jedenaście",
  7. "222" => "dwieście dwadzieścia dwa",
  8. "pięćset" => "500",
  9. "euro" => "€"
  10. );
  11.  
  12. $words = "Była sobie 1 kura, 11 świń, 111 krów i 1111 kurczaków. Wszystko poszło na 222 ruszty. Za to zarobiliśmy euro500";
  13. echo strtr($words, $arr);
  14. ?>


Co zwróci nam

  1. Była sobie jeden kura, jedenascie świń, sto jedenaście krów i tysiąc sto jedenaście kurczaków. Wszystko poszło na dwieście dwadzieścia dwa ruszty. Za to zarobiliśmy 500


Ten post edytował dublinka 11.07.2019, 12:52:57
Go to the top of the page
+Quote Post
casperii
post 11.07.2019, 17:21:08
Post #3





Grupa: Zarejestrowani
Postów: 590
Pomógł: 28
Dołączył: 14.08.2014

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


no dobra to chyba lepiej już by było to robić poprzez funkcję chyba ?

w bazie mam numerki 1,2,11

teraz te numerki musiał bym wprowadzić do funkcji i wyciągnąć "tłumaczenie"

czyli to by wyglądało jakoś tak :

  1. function przetlumaczmi($numerek){
  2. ...('select * from tlumaczenia where numerek in ($numerek)');
  3.  
  4. //pętla
  5.  
  6. return wyniki
  7. }


dobrze myślę @dublinka ?
Go to the top of the page
+Quote Post
dublinka
post 12.07.2019, 11:56:23
Post #4





Grupa: Zarejestrowani
Postów: 163
Pomógł: 18
Dołączył: 22.02.2008

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


Musialbys uzyc gotowych klas albo cos w tym rodzaju jak ponizej.

https://stackoverflow.com/questions/277569/...o-a-word-in-php

Mozesz tez cos takiego uzyc tylko przerob to dla swoich danych:


  1. <?php
  2. // end() pobiera ostatni index z tablicy i podstawiany jest do petli.
  3. // Nie wiem jak Ty tam masz wiec jest tak ze ustalilem iz ostatni index jest najwekszy
  4.  
  5. $numbers = array(1, 11, 51, 77, 20, 33, 111);
  6. $to_words = array('1' => 'jeden', '11' => 'jedenascie', '33' => 'trzydziesci trzy', '20' => 'dwadziescia', '111' => 'sto jedenascie');
  7.  
  8.  
  9. for($i=0; $i<=(end($numbers)); $i++)
  10. {
  11. if(isset($numbers[$i]))
  12. {
  13. if(array_key_exists($numbers[$i], $to_words))
  14. {
  15. echo $to_words[$numbers[$i]] . '<br>';
  16. }
  17. }
  18. }
  19.  
  20. ?>


Ten post edytował dublinka 12.07.2019, 15:42:21
Go to the top of the page
+Quote Post
Neutral
post 14.07.2019, 01:56:55
Post #5





Grupa: Zarejestrowani
Postów: 233
Pomógł: 35
Dołączył: 10.01.2016

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


  1. <body style="background: darkgoldenrod;">


  1. <?php
  2.  
  3. $data_from_db = "1 sdfsdf 11 12 1 11 tree.";
  4.  
  5.  
  6. $old = array("1","11","12");
  7. $rep = array('jeden','jedenascie','dwanascie');
  8.  
  9. if(count($old) == count($rep)) {
  10. $quantity = count($old);
  11. } else {
  12. $quantity = 0;
  13. }
  14.  
  15. for($i=0;$i<$quantity;$i++) {
  16. $old[$i] = '@\b'.$old[$i].'\b@';
  17. $rep[$i] = '<span style="color: green;">'.$rep[$i].'</span>';
  18. }
  19.  
  20.  
  21. echo preg_replace($old, $rep, $data_from_db); // jeden sdfsdf jedenascie dwanascie jeden jedenascie tree.
  22.  
  23. ?>


  1. </body>


Jest jeszcze preg_filter, ale jak sama nazwa wskazuje - filtruje dane, czyli nie wszystkie z wejścia może znaleźć się na wyjściu.

Ten post edytował Neutral 14.07.2019, 02:01:01
Go to the top of the page
+Quote Post
dublinka
post 14.07.2019, 08:29:31
Post #6





Grupa: Zarejestrowani
Postów: 163
Pomógł: 18
Dołączył: 22.02.2008

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


Tylko ze kolega nie chce zamieniac w tekscie tylko na 2 tablicach lub jedne dane z bazy jako tablica liczb ktora ma miec dpowiedniki jako wyrazy.
W Twoim przypadku $old ma sie zamienic na $ret.

Kolega tez nie napisal czy jedna i druga tablica ma ten sam uklad czy "byle jak"
Zrobilem przyklad wyzej i dziala nawet jak ma dane porozrzucane ale jedna wazna rzecz. Petla musi sie wykonac maksymalna loczbe razy ; identyczna z najwieksza wartoscia z tablicy bo nie wiem jak On ma to poukladane.

Ten post edytował dublinka 14.07.2019, 08:34:01
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: 23.07.2019 - 02:19