Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Dane wyciągnięte z emaila i łamanie lini \n
Forum PHP.pl > Forum > Przedszkole
Dog
Dziń dybry
Sytuacja:
Pobieram automatem z maila dane adresowe, które są w mailu postaci:
Imię Nazwisko
Nazwa ulicy numer
lub numer/numer (nazwa ulicy jest bez przedrostka ul.)
Kod pocztowy Miasto


Dane są następnie odsyłane funkcją mail(). W otrzymanej wiadomości są dokładnie tak samo zapisane (złamane):

Imię Nazwisko
Nazwa ulicy numer
lub numer/numer
Kod pocztowy Miasto

Natomiast wyechowane w html lub zapisane do bazy przyjmują nastepującą postać:
Imię Nazwisko Nazwa ulicy numer lub numer/numer Kod pocztowy Miasto

Chciałbym rozdzielić te dane i podejrzewam, że w zmiennej pobranej z emaila jest znacznik łamania lini (\n), który automatycznie łamie ją w nowym mailu.

Pytanie brzmi czy dobrze podejrzewam i jak zamienić ten znacznik na dowolny znak, który powie mi, że zaczyna się nowa linia danych.

Kod pocztowy oraz miasto mogę wyciągnąć przez ereg, ale co z resztą zakładając, że dane mogą przyjmować na przykład taką postać

1) Dwa imiona - łatwe gdyby imiona były zawsze dwa
Jan Maria Rokita
Kryształowa 21
2) Podwójne nazwisko - łatwe pod warunkiem, że użytkownik wpisze myślnik
Jan Maria-Rokita
3) Nazwa ulicy złożona z kilku znaków
Jan Rokita
Aleja Zwycięstwa 3
Al. Zwycięstwa 3
Aleja Miłośników Forum PHP 3
Jana z Kolana 9
Konstytucji 3 maja 114/12
4) Wieloczłonowe imię i nazwisko oraz wieloczłonowa nazwa ulicy:
Jan Maria Rokita
Jana z Kolana 13

Przy czwartym przykładzie rozróżnić imion i nazwiska niesposób, chyba, że się mylę.
Poproszę o sugestie.
Pozdrawiam
Dog
mike
Mam pytanie: Jak się robi złamanie linii w HTML (tak żeby złamanie było widoczne na stronie)?
Dog
Już widzę, że się wpakowałem wstydnis.gif smile.gif
Łamanie linii w html odbywa się poprzez wstawienie znacznika łamania linii <br />.
mike
No właśnie tongue.gif
Zamień znaki końca linii na znaczniki <br />. Masz do tego nl2br() lub jak nie będzie działała:
  1. <?php
  2.  
  3. function custom_nl2br($string) {
  4. return str_replace(array("r\n", "r", "\n"), '<br />', $string);
  5. }
  6.  
  7. ?>
Dog
Mam jeszcze jedno pytanie,
Z przeprowadzonego przed chwilą testu wynika, że znaki końca linii nie są zapisywane do bazy danych, czyli musiałbym zrobić zmianę przed zapisaniem do bazy.
W jaki najprostszy sposób wyświetlić całą zawartość łańcucha włącznie ze znakami niedrukowalnymi questionmark.gif
mike
Cytat(Dog @ 9.05.2008, 14:59:39 ) *
Mam jeszcze jedno pytanie,
Z przeprowadzonego przed chwilą testu wynika, że znaki końca linii nie są zapisywane do bazy danych, czyli musiałbym zrobić zmianę przed zapisaniem do bazy.
Zrobiłeś błąd. Znaki końca linii to takie same znaki jak inne (tylko że niewidoczne dla człowieka) i są zapisywane do bazy.
Spróbuj coś zapisać a później pobrać z bazy i wyświetlić. Jeśli coś w Twojej aplikacji nie bruździ to znaki będą.

Jeśli chodzi o ogólne podejście to ja nie zapisywałbym danych do bazy po takiej zmianie (koniec linii na -> <br />). W bazie lepiej trzymać dane w postaci oryginalnej.

Cytat(Dog @ 9.05.2008, 14:59:39 ) *
W jaki najprostszy sposób wyświetlić całą zawartość łańcucha włącznie ze znakami niedrukowalnymi questionmark.gif
Jak sama ich nazwa wskazuje sa to znaki niedrukowalne. A o jakie znaki dokładnie Ci chodzi? Jeśli o znaki końca linii to są one drukowalne ale niewidoczne.
kszychu
Trochę to nie pasuje tutaj, przenoszę na przedszkole.
.radex
~mike - no raczej o wszystkie whitespaces: " ", \t, \r, \n, \r\n
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.