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'.
$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:
function afunkciom($t)
{
  ......... mind1mivanitt :D
}

function NoRef($text)
{
  $cds=array();
  $str=uniqid('');
  $i=0;
  while(preg_match("#[noref](.*?)[/noref]#s",$text,$mtc))
  {
    $i++;
    $cds[$i]['noref']=$mtc[1];
    $text=preg_replace("#[noref].*?[/noref]#s",$str.$i,$text, 1);
  }
  $i=0;
  while(preg_match("#".$str."([0-9]+)#",$text,$mtc))
  {
    $i++;
    $text=preg_replace("#".$str."([0-9]+)#","[noref]".afunkciom($text)."[/noref]",$text,1);
  }
  return $text;
}

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)))
...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...

$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...)))

function afunkciom($adat){
$adat=str_replace("@","##kukac##",$adat);
//vagy egyéb funkció végrehajtása
return $adat;}
//---------------------------------------
$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...)))