Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z ob_start i eregi_replace
Forum PHP.pl > Forum > PHP
chomiczek
Witam, mam z połączeniem dwóch funkcji jak w tytule, o to przykładowy kod:
  1. <?php
  2. ?>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml">
  5. <head>
  6. <title>Ble ble ble</title>
  7. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  8. <meta name="Title" content="Tytuł strony" />
  9. <meta name="Description" content="Opis stronki." />
  10. <meta name="KeyPhrase" content="sklep komputerowy" />
  11. <meta name="Keywords" content="jakies slowa kluczowe" />
  12. <meta name="robots" content="all" />
  13. <meta name="googlebot" content="all" />
  14. <meta http-equiv="creation-date" content="Mon, 05 Jun 2006 19:17:51 +0100" />
  15. </head>
  16.  
  17. <body>
  18. </body>
  19. </html>
  20. <?php
  21. $tresc = ob_get_contents();
  22. $tresc = eregi_replace('<title>(.*)</title>','<title>Tekst z bazy danych taki jak ja chce</title>',$tresc);
  23. $tresc = eregi_replace('<meta name="Description" content="(.*)" />','<meta name="Description" content="opis strony w oparciu o słowa kluczowe" />',$tresc);
  24. $tresc = eregi_replace('<meta name="Keywords" content="(.*)" />','<meta name="Keywords" content="nowe słowa kluczowe" />',$tresc);
  25.  
  26. echo $tresc;
  27. ?>


Jako wynik otrzymuje
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <title>Tekst z bazy danych taki jak ja chce</title>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  5. <meta name="Title" content="Tytuł strony" />
  6. <meta name="Description" content="opis strony w oparciu o słowa kluczowe" />
  7. </head>
  8.  
  9. </body>
  10. </html>


wynika z tego, że są wykonywane tylko 2 pierwsze eregi_replace() a kod jest potem przycinany :/ Próbowałem w wyrażeniu zamienić (.*) na (.*?) ale to nic nie daje :/
PHPSESSID
Hej zamiast '(.*)' daj '([^"]*)' bo tak to on ci podmienia wszystko aż do ostatniego '" />' a nie do pierwszego napotkanego

przy '([^"]*)' zatrzymie sie na pierwszym "

chyba wszytsko jasne
Have Fun
chomiczek
Dzięki.. dokładnie o to mi chodziło.
EOT
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.