Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> string: Zamiana multi-linii na pojedynczą
crocodillo
post 3.03.2012, 18:21:00
Post #1





Grupa: Zarejestrowani
Postów: 215
Pomógł: 44
Dołączył: 31.07.2011
Skąd: wrocław

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


Witam.

Potrzebuję funkcji kodującej / dekodującej tekst do pojedynczej linii. Nie wiem teraz, czy jest jakaś funkcja, którą mógłbym wykorzystać, czy raczej muszę sam to zrobić?

Chodzi mi o coś w rodzaju urlencode() / urldecode(), tylko żeby zamieniało samo PHP_EOL.

Od razu zaznaczam, że nie chodzi mi o str_replace(PHP_EOL,'',$a). Potrzebuję też to odkodować.

Zrobiłem coś takiego:

(kod jest częścią pewnej klasy, już nie chciało mi się wycinać niepotrzebnych rzeczy)
  1. {
  2.  
  3. //...
  4.  
  5.  
  6. public function chrCode($characters,$txt=false,$specChar='%') {
  7.  
  8. $obj=($txt===false && isset($this)); if ($obj) $txt = &$this->string;
  9.  
  10. self::prepare_cc($characters,$specChar);
  11.  
  12. $txt=str_replace($specChar,$specChar.'00',$txt);
  13. $txt=str_replace(self::$cc_from,self::$cc_to,$txt);
  14.  
  15. return $obj ? $this : $txt;
  16.  
  17. }
  18.  
  19. //-------------------------------------------------
  20.  
  21. public function chrDecode($characters, $txt=false, $specChar='%') {
  22.  
  23. $obj=($txt===false && isset($this)); if ($obj) $txt = &$this->string;
  24.  
  25. self::prepare_cc($characters,$specChar);
  26.  
  27. $txt=str_replace(self::$cc_to,self::$cc_from,$txt);
  28. $txt=str_replace($specChar.'00',$specChar,$txt);
  29.  
  30. return $obj ? $this : $txt;
  31.  
  32. }
  33.  
  34.  
  35. //-------------------------------------------------
  36.  
  37. protected function prepare_cc($chrs,$specChar) {
  38.  
  39. if ($chrs == self::$cc_chrs) return; // już było prędzej przygotowane
  40.  
  41. if (!$chrs) {
  42. self::$cc_chrs=null;
  43. return;
  44. }
  45.  
  46.  
  47. self::$cc_chrs = $chrs;
  48. self::$cc_from=array();
  49. self::$cc_to=array();
  50.  
  51. for($a=0;$a<strlen($chrs);$a++) {
  52. self::$cc_from[] = $chrs[$a];
  53. self::$cc_to[] = $specChar.sprintf('%02x',$a+1);
  54. }
  55. }
  56.  
  57. }


Tylko nie wiem, czy czasami nie ma wbudowanej funkcji, która wykona dokładnie to samo.
Go to the top of the page
+Quote Post
kyku
post 4.03.2012, 13:23:06
Post #2





Grupa: Zarejestrowani
Postów: 116
Pomógł: 8
Dołączył: 21.11.2008

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


nie wiem czy dokladnie o to Ci chodzi, troche zamieszałeś
ale wnioskując po nazwie tematu:
  1. $string = 'Tekst
  2.  
  3. tekst
  4.  
  5.  
  6.  
  7. tekst';
  8. while(strpos($string, "\n\n")!==false){
  9. $string = str_replace("\n\n","\n",$string);
  10. }
  11. echo $string;

zwroci:
Tekst
tekst
tekst

// ok, przeczytalem temat jeszcze raz, chodzi Ci pewnie o jakas funkcje kodujaca, np: base64_encode (base64_decode mozesz otrzymac spowrotem ten kod)
mozesz tez zrobic cos takiego:
  1. $wjednejlinii= str_replace("\n", "[ENTER]", $tekst);
i
  1. $odwroc = str_replace("[ENTER]","\n",$tekst);


Ten post edytował kyku 4.03.2012, 13:31:03


--------------------
eArena.pl - hosting serwerów gier multiplayer
Go to the top of the page
+Quote Post
crocodillo
post 4.03.2012, 16:09:07
Post #3





Grupa: Zarejestrowani
Postów: 215
Pomógł: 44
Dołączył: 31.07.2011
Skąd: wrocław

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


Cytat(kyku @ 4.03.2012, 13:23:06 ) *
// ok, przeczytalem temat jeszcze raz, chodzi Ci pewnie o jakas funkcje kodujaca, np: base64_encode (base64_decode mozesz otrzymac spowrotem ten kod)
mozesz tez zrobic cos takiego:
  1. $wjednejlinii= str_replace("\n", "[ENTER]", $tekst);
i
  1. $odwroc = str_replace("[ENTER]","\n",$tekst);



Nie dokładnie o to mi chodzi, bo tekst może być np taki:

coś tam, coś tam [ENTER] coś jeszcze
i coś jeszcze i jeszcze


to po zamianie w 2 strony otrzymamy:


coś tam, coś tam
coś jeszcze
i coś jeszcze i jeszcze


Chodziło mi o funkcję kodującą / dekodującą wybrane znaki. base64 odpada ze względu na kodowanie całego tekstu (już nie wspominając o objętości).
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: 28.06.2025 - 18:53