phpbar.de logo

Mailinglisten-Archive

[php] Funktionsaufruf in preg_replace() ein PHP Bug?

[php] Funktionsaufruf in preg_replace() ein PHP Bug?

Michael Schoenboeck liste-php at digitalhome.cc
Mon Jan 19 08:55:42 CET 2004


Moin,

Leider kontet ihr mir bei letztiger frage nicht helfen. Nicht schlimm, war
ja keine direckte php frage. ;)

Doch nun habe ich was nettes für euch:
Also ich habe einen string namens $msg, der da so aussehen kann: 

"Das ist ein lustiger text von @michael@ und @thomas@ den ich jetzt
verarbeiten will"

Gut dazu habe ich folgendes:
  $msg = preg_replace("(\@(.+?)\@)is",getUser("$1"),$msg);

was bedeuten soll, das alles zwischen 2 @'s in der funktion getUser()
verarbeitet werden soll.
Die funktion dazu schaut so aus:

function getUser($strUsr){
  $result = mysql_query("select * from user_core where
usr_name='".$strUsr."'");
  $uData = mysql_fetch_array($result);
  if(@$uData["id"] != ""){
    $retStr = "<b>".$uData["usr_name"]."</b>";
  }else{
    $retStr = "<font color=Aqua>$strUsr</font>";
  };
  return $retStr;
};


Nun mag man sich denken wo ist das problem?
Ganz einfach: wenn ich die funktion teste mit
  echo getUser("michael");

Wird brav was zurück geliefert, also das es den user gibt,
Und bei preg_replace() scheint er die DB nicht ab zu fragen...
Da immer der gefärbte User zurück kommt!
Also der Username wird zumindest in die funktion übergeben, aber mehr
passiert nicht.

Schaut verdächtig nach BUG aus oder?
Mein system:
 - MMCache 2.4.6 [shm:win32 sem:win32],
 - PHP 4.3.4 [ZE 1.3.0 TS],
 - Apache 2.0 Handler [Apache/2.0.48 (Win32) PHP/4.3.4

Kann ich das auch anders PERFORMANT lösen?

Danke und beste grüsse
michael

--
Deine Online Community -> http://net4u.cc/
Chat, Foren, SMS, Mail, Web, Fun & more...


php::bar PHP Wiki   -   Listenarchive