Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Znalezienie wg wzorca i uruchomienie funkcji na tych elementach
activestate
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 23.08.2012

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


Czesc !

Chciałbym prosić o pomoc w pewnym zagadnieniu.

Mam z bazie tekst. Potrzebuję z tego tekstu wyciągnąć konkretny wzór, powiedzmy: "/[LICENSE]/" i zamienić go na akcję konkretnej funckcji.

Doszedłem do tego:

  1. private function replace($matches) {
  2. $da = $this->Photo->find('all');
  3. return 'test';
  4. }


  1. $da = preg_replace_callback("/[LICENSE]/" ,"self::replace", $data['Page']['body']);
  2. $this->set('data', $da);


funkcja replace() robi to co powinna, w tekscie zmienia license na test, ale to nie tak ma być.
funkcja replace powinna mi zrobić coś bardziej konkretnego - podczas wystąpienia [license] ma uruchomic funckja która, wydobędzie cos z bazy i wyświetli w pętli.

Właściwie, to potrzebuję czegoś jak na tym forum, zaznaczasz tekst, bierzesz PHP i masz znaczniki
  1. które formatują tekst.
  2.  
  3. Mnie jest potrzebne coś takiego, ale mam znaleźć np [license] i zmienić to na np:
  4.  
  5.  
  6. [php]$x = $this->set('pages', $this->Page->find('all');
  7. print $x['Page']['body'];


Dzięki za help.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
activestate
post
Post #2





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 23.08.2012

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


po modyfikacji dla CakePHP ( może komuś się przyda ):

  1. // funkcja wyswietli zdjęcia z bazy na podstawie Id
  2. function callbackFunction($matches) {
  3. $this->loadModel('Photo');
  4. $a = $this->Photo->findById($matches[1]);
  5. foreach ($a as $b) {
  6. return '<img src="files/' .$b['name'] . '" >' ;
  7. }
  8. }



  1. public function index($name = null) {
  2. $this->loadModel('Page');
  3. if ($name) {
  4. $this->Page->Subpage->recursive = -1;
  5. $this->Page->recursive = -1;
  6. if (($data = $this->Page->findBySlug($name)) OR ($data = $this->Page->Subpage->findBySlug($name))) {
  7.  
  8. // obsluga 'slugów'
  9. $pattern = '/\\[galeria:(\\d+)\\]/';
  10. $d = preg_replace_callback($pattern, "self::callbackFunction", $data['Page']['body']);
  11.  
  12. $this->set('data', $data);
  13. $this->set('test',$d) ;
  14.  
  15. } else {
  16. throw new NotFoundException('Nie ma takiej strony');
  17. }
  18. }
  19. }


W edytorze WYSIWYG wpisuję np:
[galeria:142]

Dzięki.
Go to the top of the page
+Quote Post

Posty w temacie


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: 16.10.2025 - 08:40