CraigSherwood Posted November 10, 2007 Share Posted November 10, 2007 This is an ongoing issue (sadly unsolved), if you're bored enough you can see my other posts. The code I have so far, successfully creates hyperlinks that target the right files, have the right 'title', etc. However, the getFileSize function refuses to work within the preg_replace. Seems to me that I can't properly send the $1 variable to the getFileSize function; the $strfilename always just shows up as $1, but really it should be a file name, as it is within the hyperlink section. Most boring. So, does anyone know how to trigger the getFileSize by sending $1 as a string rather than just as '$1'? When called separately the function getFileSize works, so the issue really is the $1. <?php function changeMe($str){ $pattern = "/\{([^:]*)[^\}]*)\}/"; preg_match($pattern,$str,$matches); $file = $matches[2]; $pattern = "/\{link:([^\}]*)\}/"; return preg_replace($pattern,'<a href="docs/$1" title="click to open $1" target="_blank">'.getFileSize('$1').'</a>',$str);} ?> <? function getFileSize($strfilename){ echo $strfilename.'<br />'; //returns $1 but should really return the value $pathname='docs/'; $fullname=$pathname.$strfilename; if (file_exists($fullname)){ $strsize = human(filesize($fullname)); return($strfilename.' : '.$strsize); } else { return("no file found"); } return; } function human($size){ for($si = 0; $size >= 1024; $size /= 1024, $si++); return round($size, 1).substr(' kMG', $si, 1);} ?> Link to comment https://forums.phpfreaks.com/topic/76711-run-a-function-during-preg_replace/ Share on other sites More sharing options...
effigy Posted November 12, 2007 Share Posted November 12, 2007 Use preg_replace_callback. Link to comment https://forums.phpfreaks.com/topic/76711-run-a-function-during-preg_replace/#findComment-389906 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.