Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]preg_replace w treści wczytanej z pliku
Adis92
post
Post #1





Grupa: Zarejestrowani
Postów: 146
Pomógł: 12
Dołączył: 9.01.2009
Skąd: Płock

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


Witam, mam problem ze zmianą ciągu znaków pobranych z pliku i zapisanych do zmiennej.
Dokładniej to pobieram szablon dla wiadomości email w którym chce w miejscu oznaczonym <!--body--> <!--endBody-->podmieniać tekst. Niestety bezskutecznie.
  1. <?php
  2. $email = htmlspecialchars(file_get_contents("email.html", FILE_USE_INCLUDE_PATH));
  3. $email = preg_replace('/(<\!\-\-body\-\->)(.*)(<\!\-\-endBody\-\->)/is', ${1}.'jakiś tekst'.${2}, $email);
  4. ?>

var_dump dla $email zwraca
Kod
string(2713) "<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Wiadomość wysłana z portalu </title> <style type="text/css"> html{background-color: #dfdfdf; font-family: arial;} body {margin: 20px 5%; width: 90%; min-width: 600px; background-color: #fff; box-shadow: 0 0 5px 1px rgba(0,0,0,.3);} a{color: #156b9d;} </style> </head> <body> <table collapse="1px" cellpadding="10px" cellspacing="10px" style="width: 100%; font-size: 14px;"> <thead style="border-bottom: 1px solid #dfdfdf;"> <tr> <td colspan="2" style="text-align: right; border-bottom: 1px solid #cfcfcf;"> <h1 style="font-size: 30px; color: #16498d;">tytul</h1> </td> </tr> </thead> <tbody> <tr style="line-height: 18px;"> <td colspan="2" id="wrapper"> <!--body--> <!--endBody--></td> </tr> <tr> <td colspan="2" style="background-color: #ededed; border: 1px solid #b7b7b7; font-size: 12px;">Ta wiadomość została wygenerowana automatycznie. Prosimy na nią nie odpowiadać.</td> </tr> <tr> <td colspan="2" style="border-bottom: 1px solid #cfcfcf;"> Pozdrawiamy,<br/> <br/><br/> </td> </tr> </tbody> <tfoot> <tr style="color: #505050; font-size: 13px;"> <td style="text-align: left;"> </td> <td></td> </tr> </tfoot> </table> </body> </html>"


Ten post edytował Adis92 14.02.2014, 10:56:09
Go to the top of the page
+Quote Post
Damonsson
post
Post #2





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


(IMG:http://www.mistickers.pl/environment/cache/images/400_400_productGfx_bbf02f7d3449edc66d694b039bc2a26e.jpg)

ten var_dump, przed, czy po, preg_replace?
Go to the top of the page
+Quote Post
Adis92
post
Post #3





Grupa: Zarejestrowani
Postów: 146
Pomógł: 12
Dołączył: 9.01.2009
Skąd: Płock

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


po
Go to the top of the page
+Quote Post
Damonsson
post
Post #4





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Hmm więc Twoje pytanie brzmi mniej więcej tak:


Cytat
Chcę uzyskać trójkąt, robię to przez formowanie boków, ale nie działa, bo dostaję koło, co robię źle?



Dobrze byłoby gdybyś nam napisał, czy ten trójkąt robisz z drutu, piasku czy drewna.
Go to the top of the page
+Quote Post
Adis92
post
Post #5





Grupa: Zarejestrowani
Postów: 146
Pomógł: 12
Dołączył: 9.01.2009
Skąd: Płock

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


Var_dump w pierwszym poście zwraca całą zawartość pliku email.html. Forma jest taka sama przez preg_replace i po, a po preg_replace powinien wstawić pomiędzy <!--body--> <!--endBody--> tekst 'jakiś tekst', a nie wstawia.

Ten post edytował Adis92 14.02.2014, 13:44:28
Go to the top of the page
+Quote Post
Damonsson
post
Post #6





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Hmmm, to co powiesz na to?

(IMG:http://oi61.tinypic.com/2agjcz7.jpg)

PS. Wstawiłem więcej obrazków w jednym temacie, niż przez 4 lata na forum (IMG:style_emoticons/default/Snorkle.gif)
Go to the top of the page
+Quote Post
Adis92
post
Post #7





Grupa: Zarejestrowani
Postów: 146
Pomógł: 12
Dołączył: 9.01.2009
Skąd: Płock

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


Dzięki za pomoc. Okazało się że problemem była funkcja htmlspecialchars(). Po usunięciu jej tekst się dodaje.
  1. <?php
  2. $email = htmlspecialchars(file_get_contents("email.html", FILE_USE_INCLUDE_PATH));
  3. ?>
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: 23.08.2025 - 08:44