Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Zakodowanie adresu e-mail, Problem z \0
cafepl_com
post
Post #1





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 17.01.2007

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


Witam,

wpadłem na pomysł, aby automatycznie kodować adresy e-mail za pomocą PHP. Napisałem takie coś:

  1. <?php
  2. function strtoentity($input)
  3. {
  4. foreach (str_split($input) as $obj)
  5. {
  6. $output .= "&#".ord($obj).";";
  7. }
  8. return $output;
  9. }
  10.  
  11.  
  12.  
  13. $tekst = "tekst teskt tekst tesktekst tesktekst tesk info@infooo.pl tekst tesk tekst tesk tekst tesk<br />test@testl.pl";
  14. $wzorzec = '/[a-zA-Z0-9.\-_]+@[a-zA-Z0-9\-.]+\.[a-zA-Z]{2,4}/';
  15.  
  16. echo preg_replace($wzorzec, strtoentity('\0'), $tekst);
  17. ?>


przykładowo: adres e-mail info@infooo.pl przyjmie postać info@infooo.pl
Działanie:
- najpierw znajduje adres e-mail w danym stringu
- następnie uruchamia funkcję strtoentity(), której zadaniem jest zamiana każdego znaku z tego adresu na wartość ASCII.

Problem polega na tym, że funkcja zamiast zwracać zakodowany adres, zwraca zakodowane \0. Problem zapewne banalny, ale jakoś nie potrafię sobie z nim poradzić.
Proszę o pomoc.

Ten post edytował cafepl_com 4.07.2010, 18:29:30
Go to the top of the page
+Quote Post
muk4
post
Post #2





Grupa: Zarejestrowani
Postów: 309
Pomógł: 56
Dołączył: 3.11.2006
Skąd: Gliwice

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


Może tak:
  1. preg_match($wzorzec, $tekst, $found);
  2. $encoded = strtoentity($found[0]);
  3. echo $encoded; //zakodowany adres
Go to the top of the page
+Quote Post
cafepl_com
post
Post #3





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 17.01.2007

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


Ale to zwróci jedynie znaleziony adres e-mail i zakoduje go. Chodzi mi o to, żeby wyszukał wszystkie adresy e-mail ze stringu, zakodował je i żeby pojawił się już gotowy tekst z zakodowanymi adresami. Takie coś już napisałem, problem tkwi jedynie w ', \, \0

Ten post edytował cafepl_com 4.07.2010, 19:34:51
Go to the top of the page
+Quote Post
Neo
post
Post #4





Grupa: Zarejestrowani
Postów: 43
Pomógł: 9
Dołączył: 8.08.2009
Skąd: Olsztyn

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


  1. <?php
  2. function strtoentity($input)
  3. {
  4. $input = $input[0];
  5. foreach (str_split($input) as $obj)
  6. {
  7. $output .= "&#".ord($obj).";";
  8. }
  9. return $output;
  10. }
  11.  
  12.  
  13.  
  14. $tekst = "tekst teskt tekst tesktekst tesktekst tesk info@infooo.pl tekst tesk tekst tesk tekst tesk<br />test@testl.pl";
  15. $wzorzec = '/[a-zA-Z0-9.\-_]+@[a-zA-Z0-9\-.]+\.[a-zA-Z]{2,4}/';
  16.  
  17. echo preg_replace_callback($wzorzec, 'strtoentity', $tekst);
  18. ?>


preg_replace_callback

Ten post edytował Neo 4.07.2010, 19:56:28
Go to the top of the page
+Quote Post
cafepl_com
post
Post #5





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 17.01.2007

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


O to chodziło (IMG:style_emoticons/default/smile.gif) Bardzo dziękuję i pozdrawiam.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 6.10.2025 - 01:03