Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] preg_replace a funkcje.
matix
post
Post #1





Grupa: Zarejestrowani
Postów: 278
Pomógł: 10
Dołączył: 13.02.2007
Skąd: Rybnik

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


Witam. Mam sobie taki kod:

  1. <?
  2.  
  3. function funkcja()
  4. {
  5. return 'test';
  6. }
  7.  
  8. $tresc = 'to ja, matix, {title}';
  9.  
  10. $tresc = preg_replace('#{title}#', funkcja(), $tresc);
  11.  
  12. echo ($tresc);
  13. ?>


Chciałbym teraz np. aby po wpisaniu tytułu funkcja pobrała odpowiednie (nie jedno tylko kilka) rekordy. Powtarzam - piszę nie rekord, tylko rekordy, gdyż, jeden można zwrócić bez problemu jako return. Lecz jak wiadomo, on zatrzymuje działanie pętli. Mam np coś takiego:

  1. <?
  2. function funkcja()
  3. {
  4. mysql_connect();  // pominalem dane
  5. mysql_select_db(); // tu tez
  6.  
  7. $zapytanie = mysql_query('select * from tytyly'); // tutaj np. jest 10 rekordow wybranych
  8.  
  9. while ($a = mysql_fetch_object($zapytanie))
  10. {
  11. // .. i co tutaj? 
  12. }
  13.  
  14. }
  15. ?>


Gdy wpiszę właśnie podczas pętli - echo to wiadomo - wyświetli się to w miejscu, gdzie jest napisana ta funkcja, czyli nie tam gdzie trzeba. Gdy dam return - z kolei wywoła się jeden rekord i zakończy się pętla bo to właśnie robi return po części.

Zwrócenie rekordów jako Array jest niemożliwe, gdyż trzeba skorzystać z
  1. <?php
  2. ?>
lub
  1. <?php
  2. ?>
a tego zrobić nie mogę.

Potrzebuję to do CMS-a, zarządzanie blokami, a dokładnie ich wyświetlanie w konkretnym miejscu.
Mam sobie plik left_menu.tpl np. a w nim:

  1. <div id="title">{title}</div>
  2. <div id="tresc">{tresc}</div>


Teraz potrzebuję własnie odebrać plik (robię to za pomocą file_get_contents()) i po prostu podmienic title i tresc na odpowiednią funkcję.

Proszę o pokazanie jakiegoś prostego sposobu, bo pewnie na smartach byłoby to wykonalne, ale ja wole swoje rozwiązania winksmiley.jpg

Ten post edytował matix 28.06.2007, 15:21:09


--------------------
Nawet, jeżeli nie jesteś zainteresowany usługami IT ani outsourcingiem, a Twoją pasją jest programowanie - zobacz naszą stronę. Piszemy dużo fajnych use-caseów, jak podchodzimy do tematu programowania dla naszych klientów. A tak na co dzień tworzymy budujemy mvp oraz tworzymy platformę b2b.
Go to the top of the page
+Quote Post
php programmer
post
Post #2





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 5
Dołączył: 8.11.2004
Skąd: trójmiasto

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


To może jak nie możesz zwrócić samej tablicy
to zwróć stringa w postaci serialize

  1. <?php
  2. function DajTablice(){
  3. ...
  4. retrurn serialize($tablica)
  5. }
  6.  
  7.  
  8. $serial = DajTablice();
  9. $tablica = unserialize($serial);
  10. ?>
Go to the top of the page
+Quote Post
deirathe
post
Post #3





Grupa: Zarejestrowani
Postów: 426
Pomógł: 32
Dołączył: 24.05.2007

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


A możę by tak
  1. <?php
  2. ?>
i w foreachu który będzie leciał przez tablice wyników wstawić
  1. <?php
  2. ?>
? np
  1. <?php
  2. preg_match_all('/{(.*)}/i',$tresc,$tablicawynikow);
  3. foreach(...){
  4.  ...
  5.  preg_replace($wynik,function(),$tresc);
  6. }
  7. ?>


--------------------
Kawałek mojego blogu
Everything should be as simple as possible but not simpler.
A Einstein
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 19:35