Jak w najprostszy sposob w tekscie zamienic string
<!-- ABCDE jakiespolecenie -->
na wynik funkcji
WykonajPolecenie('jakiespolecenie');
Zakladamy, ze 'ABCDE' to jakis identyfikator, ktory jest staly.
Jak na razie zrobilem to tak (normalnie 3 linijki, ale Thunderbird
lamie, wiec sformatowalem czytelniej):
if(preg_match_all('/<!-- ABCDE (?<jakiespolecenie>.*?) -->/',
$tekst,
$found))
foreach($found['jakiespolecenie'] AS $polecenie)
$tekst = str_replace('<!-- ABCDE ' . $polecenie . ' -->',
WykonajPolecenie($polecenie),
$tekst);
...ale wydaje mi sie, ze da sie jakos prosciej, prawda?
Tylko nie jestem w stanie poskladac tego w calosc :)
Podejrzewam ze za pomoca preg_replace_callback(), ale nie bylem w stanie
zlozyc tego w calosc na podstawie przykladow z php.net
Pozdrawiam.
--
[= WRonX =] [= WRonX@-CUT-WRonX.NET =] [= http://WRonX.NET =]
[= GCS/CC d->++ s+:- a- C++++$ U P>++ L+ !E W+++$ N++(+++) =]
[= !o-- K-? w++$ !O !M- !V-- PS+ PE !Y !PGP !t !5 X++ R++ =]
[= tv+ b+++ DI++ D+ G+ e+++ h--->---- r+++ y? =]
$result = preg_replace('/<!--\s+ABCDE\s+(\w+)\s+-->/m',
'WykonajPolecenie(\'$1\')', $subject);
--
Wys�ano z serwisu OnetNiusy: http://niusy.onet.pl
Na szybko, bo nie mam czasu tego sprawdzic - czy to nie zamieni mi tylko
znacznika na nazwe funkcji? Bo chcialbym, zeby zamienilo na wynik tej
funkcji.
Hint: preg_replace_callback
Pozdr.
mk
> Hint: preg_replace_callback
Ja wiem, ze powinienem schowac ogon pod siebie, bo to ja pytam, ale bez
przesady...
W pierwszym poscie zaznaczylem wyraznie, ze "Podejrzewam ze za pomoca
preg_replace_callback(), ale nie bylem w stanie zlozyc tego w calosc na
podstawie przykladow z php.net".
Po prostu - nie ogarniam jakos manuala w tym przypadku - wystepuja tam
niezrozumiale dla mnie wywolania funkcji i przekazywanie parametrow.
Nie jestem studentem, ktory potrzebuje tego na "na gwalt" na zaliczenie,
pokazalem, ze poradzilem sobie w inny sposob, a teraz prosilem, zeby mi
ktos powiedzial, jak to mozna uproscic. Bez hintow, za to moze byc za
pomoca przykladu :)
> W pierwszym poscie zaznaczylem wyraznie, ze "Podejrzewam ze za pomoca
> preg_replace_callback(), ale nie bylem w stanie zlozyc tego w calosc na
> podstawie przykladow z php.net".
Nie doczyta�em, moja wina...
>
> Po prostu - nie ogarniam jakos manuala w tym przypadku - wystepuja tam
> niezrozumiale dla mnie wywolania funkcji i przekazywanie parametrow.
To czego nie rozumiesz w tym (przyk�ad z php.net):
<?php
// this text was used in 2002
// we want to get this up to date for 2003
$text = "April fools day is 04/01/2002\n";
$text.= "Last christmas was 12/24/2001\n";
// the callback function
function next_year($matches)
{
// as usual: $matches[0] is the complete match
// $matches[1] the match for the first subpattern
// enclosed in '(...)' and so on
return $matches[1].($matches[2]+1);
}
echo preg_replace_callback(
"|(\d{2}/\d{2}/)(\d{4})|",
"next_year",
$text);
?>
>
> Nie jestem studentem, ktory potrzebuje tego na "na gwalt" na zaliczenie,
> pokazalem, ze poradzilem sobie w inny sposob, a teraz prosilem, zeby mi
> ktos powiedzial, jak to mozna uproscic. Bez hintow, za to moze byc za
> pomoca przykladu :)
Przyk�ady masz na php.net - wystarczy przeczyta�
http://pl2.php.net/preg_replace_callback razem z przyk�adami. Powy�sze
nale�y robi� tak d�ugo a� si� nie zatrybi.
Pozdr.
MK