[PHP] Nietypowe podzielenie i przetworzenie stringa


(Mbocian 94) #1

Witam,

mam zmienną x przechowujacą szablon strony (lub tekst). Nie wiem jak się zabrać do tego, aby PHP z całej zmiennej wyszukał wszystkie wyrazy zaczynające się od {$const.nazwa_stalej}, i wyświetlił nazwę stałej.

Przykład:

'Lorem ipsum dolor sit amet, consectetur adipiscing elit. {$const.stala1} Donec hendrerit magna non mauris blandit fringilla. {$const.stala2} Vestibulum ac tempor dui. Vivamus.'

Wyszuka 2 stałe: const1, const2 i zamieni je z wartością stałej.

Próbowałem z str_replace, explode, ale nie mam już pomysłu jak to zrobić :frowning:


(M@ster) #2

Wyrażenia regularne i funkcja preg_match, preg_match_all. Zachęcam do lektury. Zagadnienie nie jest łatwe ale przy pomocy wyrażeń zrobisz to bardzo prosto.

Przykładowo:

preg_match_all('/\{$(.+?)\}/i', $x, $matches);

var_dump($matches);

Edit:

Teraz doczytałem że Tobie zależy na podmianie stałych, to już odsyłam do preg_replace a zwłaszcza preg_replace_callback.


(Mbocian 94) #3

Zrobiłem funkcją preg_replace

<?php

define('test', 'test');

$str = 'Moja testowa stala {$const.test}.';

$pattern = '/{\$const.(.*?)}/';

$replace = '\1'; // wyswietla w tym miejscu test, czyli dziala jak nalezy


echo preg_replace($pattern, $replace, $str);

?>

Jednak gdy $replace zamienię z

$replace=constant('\1');

nie pokazuje się wartość stałej test.