Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Jak zmodyfikować kod aby wytłuścić czcionkę?
Forum PHP.pl > Forum > Przedszkole
zaworek
Zwracam się z prośbą o pomoc w modyfikacji poniższego kodu.
Jest to wycinek skryptu, którego zadaniem jest przechwytywanie informacji z formularza, zapisanie ich w bazie oraz przesłanie drogą mailową.

  1. $eol = "\n";
  2. $internalfields = array ("submit", "reset", "send", "captcha_code");
  3. $message .= $eol;
  4. $message .= "Adres IP : ";
  5. $message .= $_SERVER['REMOTE_ADDR'];
  6. $message .= $eol;
  7. foreach ($_POST as $key => $value)
  8. {
  9. if (!in_array(strtolower($key), $internalfields))
  10. {
  11. if (!is_array($value))
  12. {
  13. $message .= ucwords(str_replace("_", " ", $key)) . " : " . $value . $eol;
  14.  
  15. }
  16. else
  17. {
  18. $message .= ucwords(str_replace("_", " ", $key)) . " : " . implode(",", $value) . $eol;
  19. }
  20. }
  21. }


Skrypt dział jak powinien chciałbym jednak żeby pewne dane przekazywane w mailu zostały sformatowane (chodzi o wytłuszczenie).
Konkretnie sprawa dotyczy poniższej zmiennej. Nie mogę poradzić sobie z wydawałoby się tak prostą sprawą.

  1. $message .= ucwords(str_replace("_", " ", $key)) . " : " . $value . $eol;
Ilware
Cytat(zaworek @ 28.11.2011, 12:30:26 ) *
  1. $eol = "\n";
  2. $internalfields = array ("submit", "reset", "send", "captcha_code");
  3. $message .= $eol;
  4. $message .= "Adres IP : ";
  5. $message .= $_SERVER['REMOTE_ADDR'];
  6. $message .= $eol;
  7. foreach ($_POST as $key => $value)
  8. {
  9. if (!in_array(strtolower($key), $internalfields))
  10. {
  11. if (!is_array($value))
  12. {
  13. $message .= ucwords(str_replace("_", " ", $key)) . " : <b>" . $value . $eol."</b>";
  14.  
  15. }
  16. else
  17. {
  18. $message .= ucwords(str_replace("_", " ", $key)) . " : " . implode(",", $value) . $eol;
  19. }
  20. }
  21. }


Skrypt dział jak powinien chciałbym jednak żeby pewne dane przekazywane w mailu zostały sformatowane (chodzi o wytłuszczenie).
Konkretnie sprawa dotyczy poniższej zmiennej. Nie mogę poradzić sobie z wydawałoby się tak prostą sprawą.

  1. $message .= ucwords(str_replace("_", " ", $key)) . " : " . $value . $eol;


czy taka modyfikacja nie rozwiązuje problemu?
zaworek
Niestety. Po zasugerowanej zmianie czyli

  1. $message .= ucwords(str_replace("_", " ", $key)) . " : <b>" . $value . $eol."</b>";


PHP generuje błąd

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING
Ilware
a co potem robisz ze zmienną $message?

wywołałem taki kod :

  1. $eol = "\n";
  2. $internalfields = array ("submit", "reset", "send", "captcha_code");
  3. $message .= $eol;
  4. $message .= "Adres IP : ";
  5. $message .= $_SERVER['REMOTE_ADDR'];
  6. $message .= $eol;
  7. foreach ($_SERVER as $key => $value)
  8. {
  9. if (!in_array(strtolower($key), $internalfields))
  10. {
  11. if (!is_array($value))
  12. {
  13. $message .= ucwords(str_replace("_", " ", $key)) . " : <b>" . $value . $eol."</b>";
  14.  
  15. }
  16. else
  17. {
  18. $message .= ucwords(str_replace("_", " ", $key)) . " : <b>" . implode(",", $value) . $eol."</b>";
  19. }
  20. }
  21. }
  22. echo $message;


i nie ma żadnego błędu.
http://mentax.eu/printscreen/adam/2011-11-...51.png#1907x551
zaworek
Potem widzę, że wysyłane jest to w BODY

  1. $boundary = md5(uniqid(time()));
  2. $body = 'This is a multi-part message in MIME format.'.$eol.$eol;
  3. $body .= '--'.$boundary.$eol;
  4. $body .= 'Content-Type: text/plain; charset=UTF-8'.$eol;
  5. $body .= 'Content-Transfer-Encoding: 8bit'.$eol;
  6. $body .= $eol.stripslashes($message).$eol;
  7. $body .= '--'.$boundary.'--'.$eol;
  8. mail($mailto, $subject, $body, $header);
  9. $search = array("ä", "Ä", "ö", "Ö", "ü", "Ü", "ß", "!", "§", "$", "%", "&", "/", "\x00", "^", "°", "\x1a", "-", "\"", " ", "\\", "\0", "\x0B", "\t", "\n", "\r", "(", ")", "=", "?", "`", "*", "'", ":", ";", ">", "<", "{", "}", "[", "]", "~", "˛", "ł", "~", "ľ", "@", "|", "<", "+", "#", ".", "´", "+", ",");
  10. $replace = array("ae", "Ae", "oe", "Oe", "ue", "Ue", "ss");
  11. foreach($_POST as $name=>$value)
  12. {
  13. $name = str_replace($search, $replace, $name);
  14. $name = strtoupper($name);
  15. $form_data[$name] = $value;
  16. }
Ilware
u mnie nadal wszystko działa i nie ma żadnego błędu.
zaworek
Sprawdziłem jeszcze raz na spokojnie poniższy kod.


  1. foreach ($_POST as $key => $value) //pętla przetwarza tablicę $_POST i zwraca nazwy indeksów
  2.  
  3. {
  4. if (!in_array(strtolower($key), $internalfields))
  5. {
  6. if (!is_array($value))
  7. {
  8. $message .= ucwords(str_replace("_", " ", $key)) . " : <b>" . $value . $eol."</b>";
  9.  
  10. }
  11. else
  12. {
  13. $message .= ucwords(str_replace("_", " ", $key)) . " : <b>" . implode(",", $value) . $eol."</b>;
  14. }
  15. }
  16. }
  17. echo $message; //wyświetlam zmienną message (tutaj pogrubienie jest widoczne)


Wyświetlając zmienną message czcionka jest wytłuszczona czy tak jak chcę.
Niestety w mailu już tego nie widać a dodatkowo dodawany jest w treści znacznik <b>.

Znakiem tego wytłuszczenie znika gdzieś w poniższym kodzie.
  1. $body = 'This is a multi-part message in MIME format.'.$eol.$eol;
  2. $body .= '--'.$boundary.$eol;
  3. $body .= 'Content-Type: text/plain; charset=UTF-8'.$eol;
  4. $body .= 'Content-Transfer-Encoding: 8bit'.$eol;
  5. $body .= $eol.stripslashes($message).$eol; //usuwa znak \ z ciągu znaków
  6. $body .= '--'.$boundary.'--'.$eol;
  7. mail($mailto, $subject, $body, $header);
  8. $search = array("ä", "Ä", "ö", "Ö", "ü", "Ü", "ß", "!", "§", "$", "%", "&", "/", "\x00", "^", "°", "\x1a", "-", "\"", " ", "\\", "\0", "\x0B", "\t", "\n", "\r", "(", ")", "=", "?", "`", "*", "'", ":", ";", ">", "<", "{", "}", "[", "]", "~", "˛", "ł", "~", "ľ", "@", "|", "<", "+", "#", ".", "´", "+", ",");
  9. $replace = array("ae", "Ae", "oe", "Oe", "ue", "Ue", "ss");
  10. foreach($_POST as $name=>$value)
  11. {
  12. $name = str_replace($search, $replace, $name);
  13. $name = strtoupper($name);
  14. $form_data[$name] = $value;
  15. }



Idąc tym tropem zmieniłem
  1. $body .= 'Content-Type: text/plain; charset=UTF-8'.$eol;

na
  1. $body .= 'Content-Type: text/html; charset=UTF-8'.$eol;


Formatowanie już działa ale nie ma łamania wierszy. Wszystko w mailu wysyłane jest w jednym ciągu :/
Ilware
dodaj po każdym nowym wierszu <br /> i powinno być okej smile.gif
zaworek
Tak też zrobiłem. Dziękuję za pomoc. Temat uważam za rozwiązany.
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-2025 Invision Power Services, Inc.