ugrás a tartalomhoz

Függvény végrehajtása egy változón egy adott részen

vtsoftware · 2008. Május. 4. (V), 11.12
Sziasztok

Sokmillió bocsánatot kérek előre is ha már van ilyen téma, de sajnos nem találtam meg ami nekem kéne'.
  1. $text="SZÖVEGSZÖVEGSZÖVEG[noref]email##kukac##domm.thd[/noref]SZÖVEGSZÖVEGSZÖVEG";  
A problémám az lenne hogy egy adott szöveg ami $text változóban van tárolva abban kellene nekem minden e-mail címen egy funkciót végrehajtanom.

Sajnos nem értek preg_replace()-hez - pedig ezzel sztem meg lehetne csinálni - ezért kérem a segítéget.

Előre is köszönöm
 
1

El lemaradt, bocsánat...

vtsoftware · 2008. Május. 4. (V), 11.25
Elnézést mindenkitől ahol most tartok azt bezzeg elfelejtettem :D belemerültem a keresésbe...
Tehát a kód, amivel nem jutok dűlőre:
  1. function afunkciom($t)  
  2. {  
  3.   ......... mind1mivanitt :D  
  4. }  
  5.   
  6. function NoRef($text)  
  7. {  
  8.   $cds=array();  
  9.   $str=uniqid('');  
  10.   $i=0;  
  11.   while(preg_match("#[noref](.*?)[/noref]#s",$text,$mtc))  
  12.   {  
  13.     $i++;  
  14.     $cds[$i]['noref']=$mtc[1];  
  15.     $text=preg_replace("#[noref].*?[/noref]#s",$str.$i,$text, 1);  
  16.   }  
  17.   $i=0;  
  18.   while(preg_match("#".$str."([0-9]+)#",$text,$mtc))  
  19.   {  
  20.     $i++;  
  21.     $text=preg_replace("#".$str."([0-9]+)#","[noref]".afunkciom($text)."[/noref]",$text,1);  
  22.   }  
  23.   return $text;  
  24. }  
  25.   
  26. echo NoRef("[noref]fery##kukac##jee.hu[/noref]");  
Namost nem írom ide hogy ez milyen kimenetet ad... húú.
2

Egyrészt

Ronyn · 2008. Május. 4. (V), 11.56
a [és ] jelet a mintában le kell védeni,másrészt ahol a funkciodat használod,ott a mintához kell egy e modositó,és a csereszöveget duplán kell idézöjelezni,hogy a kimenet is érvényes php kod legyen...
Elsöre ennyi)))
  1. ...minta#e",'"[noref]".funkcio."[/noref]"');  
3

Nem nagyon értem...

vtsoftware · 2008. Május. 5. (H), 09.46
Igazán köszi a tanácsot, de sajnos nem nagyon értem hogy hogy is érted.
Egy ici-picit szájbarágósabban el tudnád mondani hogy is kellene?
Nem kódra gondolok, csak hogy megértsem...
Köszi szépen

(Modiktól pedig elnézést kérek ;-) )
4

Nem tudom...

Ronyn · 2008. Május. 5. (H), 21.40
Milyen funkciót is akarsz rajta végezni,de ha csak egy adott funkciót szeretnél végrehajtani rajta,akkor szerintem ennyi is elég...
  1. $text=preg_replace("#\[noref\](.*?)\[/noref\]#se",'"[noref]".afunkciom(\"$1\")."[/noref]"',$text);  
A csere elött meghivja a funkciódat ,ami végrehajtja a kivánt modosítást az emailcimen,majd a funkciód által visszaadott értéket illeszti be csereszövegként...
Az általad vázolt módon "kiemelni" a emailcimet,akkor érdemes,ha más modosításokat is végrehajtasz közben a szövegen,és nem akarod hogy eközben az emailcímek is módosuljanak,viszont akkor a "kiemeléshez" is egy külön függvény kell,ami aztán vissza is illeszti az adott szöveget...
5

A funkcióban...

vtsoftware · 2008. Május. 6. (K), 00.06
Őőő evvel a kóddal van egy kis bibi. Nem ad eredményt 30mp alatt és ha továbbállítom a max. futásidőt akkor sem...
A funkcióban NoSpam-elni akarnám az e-mail címet, nemtom ismerős-e JavaScript-et íratok ki document.write-vel, néhány karaktert kódolva...
6

Egy kis önállósággal...

Ronyn · 2008. Május. 6. (K), 01.58
Magad is javithattad volna...)))
  1. function afunkciom($adat){  
  2. $adat=str_replace("@","##kukac##",$adat);  
  3. //vagy egyéb funkció végrehajtása  
  4. return $adat;}  
  5. //---------------------------------------  
  6. $text=preg_replace("#\[noref\](.*?)\[/noref\]#se",'"[noref]".afunkciom("$1")."[/noref]"',$text);    
Az afunkciom("$1")-hez nem kellett volna a perjel(\),a sima (') idézöjel miatt,csak hát a megszokás...)))