Tom743 0 Report post Posted April 13, 2008 (edited) <?phpfunction code( $input ){$data[0] = "<?php include(\"shoutbox.php?no=";$data[1] = "\"); ?>";$find[0] = "/\[b\](.*?)\[\/b\]/i";$find[1] = "/\[url\=(.*)\](.*)\[\/url\]/";$find[2] = "/\[u\](.*?)\[\/u\]/i";$find[3] = "/\[i\](.*?)\[\/i\]/i";$find[4] = "/\[big\](.*?)\[\/big\]/i";$find[5] = "/\[small\](.*?)\[\/small\]/i";$find[6] = "/\[shoutbox]id=(.*)\[\/shoutbox\]/";$replace[0] = "<b>$1</b>";$replace[1] = "<a href=\"$1\">$2</a>";$replace[2] = "<u>$1</u>";$replace[3] = "<i>$1</i>";$replace[4] = "<font size=\"5\">$1</font>";$replace[5] = "<font size=\"2\">$1</font>";$replace[6] = "$data[0]$1$data[1]";$change = preg_replace($find, $replace, $input);print $change;}code("[shoutbox]id=1[/shoutbox]");?> In my code, the shoutbox doesnt work. The code is ment to replace [shoutbox]no= with <?php include("shoutbox.php?no= then replace [/shoutbox] with "); ?> which it does, but then the php code just appears in the sorce of the webpage. Does anyone know how to fix it? Thanks Notice from electriic ink: There's no need to sign your name. We can see who started the topic Edited April 13, 2008 by electriic ink (see edit history) Share this post Link to post Share on other sites
electriic ink 1 Report post Posted April 13, 2008 Wouldn't it be easier just to do this? $string = '[shoutbox]id=1[/shoutbox]';$string = str_replace ('[shoutbox]id=', '', $string);$string = str_replace ('[/shoutbox]', '', $string);include ('shoutbox.php?no=' . $string); Using that you could create a seperate function:function shoutbox_tag ($input) { $string = strstr ($input, '[shoutbox]'); // Removes all parts of string that are NOT [shoutbox]...[/shoutbox] $string = strstr ($string, '[/shoutbox]', true); $string = $string . '[/shoutbox]'; // End remove $string = str_replace ('[shoutbox]id=', '', $string); $string = str_replace ('[/shoutbox]', '', $string); return $string;} Which you would call as follows:include ('shoutbox.php?no=' . shoutbox_tag('123123[shoutbox]id=1[/shoutbox]123123')); Share this post Link to post Share on other sites
truefusion 3 Report post Posted April 13, 2008 If you want to execute a string as if it were PHP code, consider researching eval. Just be careful with this function, as you wouldn't want user input to be ran as PHP code, so you may need to properly verify the string before running eval.BTW, you can't include files the way you want them to be included; that is, assigning _GET variables. Share this post Link to post Share on other sites
Tom743 0 Report post Posted April 15, 2008 Is it possible when using PHP preg_replace, to include something, rather than displaying text. The code is below, the proplem is with the shoutbox. <?phpfunction code( $input ){$find[0] = "/\[b\](.*?)\[\/b\]/i";$find[1] = "/\[url\=(.*)\](.*)\[\/url\]/";$find[2] = "/\[u\](.*?)\[\/u\]/i";$find[3] = "/\[i\](.*?)\[\/i\]/i";$find[4] = "/\[big\](.*?)\[\/big\]/i";$find[5] = "/\[small\](.*?)\[\/small\]/i";$find[6] = "/\[shoutbox]id=(.*?)\[\/shoutbox\]/";$replace[0] = "<b>$1</b>";$replace[1] = "<a href=\"$1\">$2</a>";$replace[2] = "<u>$1</u>";$replace[3] = "<i>$1</i>";$replace[4] = "<font size=\"5\">$1</font>";$replace[5] = "<font size=\"2\">$1</font>";$replace[6] = include("shoutbox.php?no=$1");$change = preg_replace($find, $replace, $input);echo $change;}code("[shoutbox]id=2[/shoutbox]");?> It doesnt replace the $1 with the shoutbox id and the error message is; Warning: include(shoutbox.php?no=$1) [function.include]: failed to open stream: No error in C:\wamp\www\replace\index.php on line 18 Warning: include() [function.include]: Failed opening 'shoutbox.php?no=$1' for inclusion (include_path='.;C:\php5\pear') in C:\wamp\www\replace\index.php on line 18 Notice from jlhaslip: Moved to PHP Programming Notice from truefusion: Merging topics Share this post Link to post Share on other sites
truefusion 3 Report post Posted April 15, 2008 It doesnt replace the $1 with the shoutbox idEven if it did replace the 1 variable, it still wouldn't work. As i've mentioned above, you cannot include files the way you want to. If you want to set $_GET['id'], you have to do so with the parent page. Share this post Link to post Share on other sites
Tom743 0 Report post Posted April 15, 2008 Wouldn't it be easier just to do this? $string = '[shoutbox]id=1[/shoutbox]';$string = str_replace ('[shoutbox]id=', '', $string);$string = str_replace ('[/shoutbox]', '', $string);include ('shoutbox.php?no=' . $string); Using that you could create a seperate function:function shoutbox_tag ($input) {$string = strstr ($input, '[shoutbox]'); // Removes all parts of string that are NOT [shoutbox]...[/shoutbox]$string = strstr ($string, '[/shoutbox]', true);$string = $string . '[/shoutbox]'; // End remove$string = str_replace ('[shoutbox]id=', '', $string);$string = str_replace ('[/shoutbox]', '', $string);return $string;} Which you would call as follows:include ('shoutbox.php?no=' . shoutbox_tag('123123[shoutbox]id=1[/shoutbox]123123')); Ok, but if im not just going to add a shoutbox code in there, i will post other tags like so then it wont work Share this post Link to post Share on other sites
electriic ink 1 Report post Posted April 18, 2008 Sorry for neglecting your topic Ok, but if im not just going to add a shoutbox code in there, i will post other tags like so then it wont workIt does. That's what this part of the code does:$string = strstr ($input, '[shoutbox]'); // Removes all parts of string that are NOT [shoutbox]...[/shoutbox]$string = strstr ($string, '[/shoutbox]', true);$string = $string . '[/shoutbox]'; // End remove It removes all parts of input that are not [shoutbox]...[/shoutbox] and processes them separately. Unless you can see otherwise...BTW, what truefusion is saying about including files (I don't think you understand - sorry if you do) is this:You can't include a file like this:include 'file.php?id=1'; And have the code in file.php as:function ($_GET['id']); It doesn't work. If you want to "give" a variable to an included file, you have to this:$id = 1;include 'file.php'; And have the code in file.php as:function ($id); Share this post Link to post Share on other sites