Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Przetwarzanie tekstu
michal_s
post 7.09.2011, 15:52:15
Post #1





Grupa: Zarejestrowani
Postów: 148
Pomógł: 1
Dołączył: 11.12.2010

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


Witam. Za pomocą funkcji strpos pobieram miejsce, na którym znajduje się interesujący mnie znak i mam teraz pytanie jak wiedząc gdzie się znajduję mogę go zamienić na coś innego. Szukam (bezskutecznie...) funkcji, która w ciągu by wstawiała na podanym w parametrach miejscu znak (też podany) zamiast tego, który tam jest. Ma wykonywac zamianę. Istnieje taka funkcja? z góry dzięki.
Go to the top of the page
+Quote Post
flashdev
post 7.09.2011, 16:57:27
Post #2





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


http://www.php.net/manual/en/function.substr-replace.php


--------------------
Go to the top of the page
+Quote Post
bastard13
post 7.09.2011, 16:58:17
Post #3





Grupa: Zarejestrowani
Postów: 664
Pomógł: 169
Dołączył: 8.01.2010
Skąd: Kraków

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


Używając strpos() zastąpisz tylko pierwsze wystąpienie danej litery. Możesz ciąg traktować jako tablicę, czyli:
  1. $text = 'some cool text';
  2. $position = strpos($text, 'o');
  3. $text[$position] = 'x';
  4. echo $text;


lub możesz skorzystać z funkcji str_replace(), aby zastąpić wszystkie wystąpienia liter:
  1. <?php
  2. $text = 'some cool text';
  3. echo str_replace('o', 'x', $text);


--------------------
Go to the top of the page
+Quote Post
mortus
post 7.09.2011, 17:03:50
Post #4





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


  1. $tekst = 'krofa';
  2. $znak1 = 'f';
  3. $znak2 = 'w';
  4. echo '<p>'.$tekst.'</p>';
  5. $tekst[strpos($tekst, $znak1)] = $znak2;
  6. echo '<p>'.$tekst.'</p>';

Można również użyć str_replace() z ostatnim parametrem ustawionym na 1:
  1. $tekst = 'krofa';
  2. $znak1 = 'f';
  3. $znak2 = 'w';
  4. echo '<p>'.$tekst.'</p>';
  5. $tekst = str_replace($znak1, $znak2, $tekst, 1);
  6. echo '<p>'.$tekst.'</p>';

Zadziała to tak samo, ponieważ strpos() zwraca "miejsce" wystąpienia pierwszego znaku w ciągu. No chyba, że użyjesz strpos() z ustawionym drugim parametrem.
Podobnie jak str_replace() można użyć wyrażeń regularnych i preg_replace().

EDIT
Spóźniłem się. Tyle rozwiązań ilu programistów.

Ten post edytował mortus 7.09.2011, 17:04:41
Go to the top of the page
+Quote Post
michal_s
post 7.09.2011, 20:00:00
Post #5





Grupa: Zarejestrowani
Postów: 148
Pomógł: 1
Dołączył: 11.12.2010

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


Jesteście genialni. Dzięki wielkie;)
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: 21.05.2024 - 05:19