943,997 Members | Top Members by Rank

Ad:
  • PHP Discussion Thread
  • Unsolved
  • Views: 2569
  • PHP RSS
May 5th, 2007
0

XML and str_replace !

Expand Post »
Well, I were trying to make code that gets a XML element from the file and replaces with new data.

Here is my code.

Parsing command:
Quote ...
function ExecuteCMD($forplayer, $what, $to)
{
$player_dir = 'D:\\Programy\\Open Tibia Server Project\\DeadTouch Binary\\data\\players\\';

$SetPlayer = file_get_contents($player_dir . "\\" . $forplayer . ".xml");
$SetPlayer = str_replace($what, $to, $SetPlayer);

$OpenFile = fopen($player_dir . "\\" . $forplayer . ".xml", "w+");
if ($OpenFile)
{
fwrite($OpenFile,$SetPlayer);
}
fclose($OpenFile);
}
Here is command that function above executed:
Quote ...
require_once('./config.php');
require_once('./pe_ha_pe.php');
$cmd = explode(" ", $_POST['cmd']);
$player_dir = $data . '\\players\\';

@ $acp_d_file = file_get_contents($player_dir . "\\" . $cmd[1] . ".xml");
@ $System = simplexml_load_string($acp_d_file);

if ($cmd[0] == "/level")
{
if (!$cmd[1] || !$cmd[2])
{
echo 'Not enough of parameters for <B>' . $cmd[0] . '</b> command...';
}
else
{
if (@ !$acp_o_file = fopen($player_dir . "\\" . $cmd[1] . ".xml", "r"))
{
echo 'Player does not exist or nickname is wrong.';
}
else
{

if ($System['level'] == $cmd[2])
{
echo 'Provided level and player level is same.';
}
else
{
ExecuteCMD($cmd[1], $System['level'], $cmd[2]);
echo 'Command ' . $cmd[0] . ' with value ' . $cmd[2] . ' used on ' . $cmd[1] . ': <font color="green">SUCCESS</font>';
}
}

}

}
And for example, if I execute command:
/level GOD 0

In GOD.xml we'll have:
Quote ...
<?xml version="0.0"?>
<player name="MaestroS" account="0152818" sex="0" lookdir="0" exp="015544804375" voc="01" level="01439" access="0" cap="09810" maglevel="0139" lastlogin="01178140167" lastlogout="01178132522" promoted="0" banned="0">
(...)
When it should look like that:
Quote ...
<?xml version="1.0"?>
<player name="MaestroS" account="152818" sex="0" lookdir="0" exp="15544804375" voc="1" level="0" access="0" cap="9810" maglevel="139" lastlogin="1178140167" lastlogout="1178132522" promoted="1" banned="0">
(...)
The problem is in ExecuteCMD function.
I think it's about str_replace that just works wrong.

How to get an element from file and replace with new provided data correctly ?
Last edited by MaestroS; May 5th, 2007 at 6:59 am.
Similar Threads
Reputation Points: 10
Solved Threads: 0
Newbie Poster
MaestroS is offline Offline
12 posts
since Apr 2007
May 6th, 2007
0

Re: XML and str_replace !

What you _could_ do is..
say the XML element is <item>...
You could store all text before and including the <item> tag.

Then store all the text after and including the </item> tag.

Then you can do.

PHP Syntax (Toggle Plain Text)
  1. $string = $before . $value . $after;
Reputation Points: 35
Solved Threads: 5
Junior Poster
dr4g is offline Offline
136 posts
since Apr 2007
May 8th, 2007
0

Re: XML and str_replace !

or you could load the data into an array
and do your changes
then write all the array to the file
Reputation Points: 18
Solved Threads: 9
Junior Poster
w_3rabi is offline Offline
160 posts
since Dec 2006
May 8th, 2007
0

Re: XML and str_replace !

That would probably be an easier approach.
Reputation Points: 35
Solved Threads: 5
Junior Poster
dr4g is offline Offline
136 posts
since Apr 2007

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in PHP Forum Timeline: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result
Next Thread in PHP Forum Timeline: Email Validation





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC