Jump to content
xisto Community
Sign in to follow this  
Tom743

Php Replace Help!

Recommended Posts

<?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 by electriic ink (see edit history)

Share this post


Link to post
Share on other sites

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

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

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

It doesnt replace the $1 with the shoutbox id

Even 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

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

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 work

It 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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

Terms of Use | Privacy Policy | Guidelines | We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.