Jump to content

[SOLVED] preg_replace/trim text file into mysql table


quasiman

Recommended Posts

I'm trying to use the text lists from the card game "Magic: The Gathering", and insert the data into a mysql table.  I found a basic script that is supposed to do it, I've modified it a little for some basic errors I found, but it's still not quite working.

Here's the first 2 records in the file so you can see how it looks to me:

Card Title: Air Elemental

Color: Blue

Card Type: Summon Elemental

Cost: 3UU

Pow/Tgh: 4/4

Card Text: Flying

Artist: Richard Thomas

Rarity: Uncommon 1

 

Card Title: Ancestral Recall

Color: Blue

Card Type: Instant

Cost: U

Pow/Tgh: n/a

Card Text: Draw 3 cards or force opponent to draw 3 cards.

Artist: Mark Poole

Rarity: Rare 1

Here's the results/insert that I get when running the file:

Card Type: Summon Elemental

Cost: 3UU

Pow/Tgh: 4/4

Card Text: Flying

Artist: Richard Thomas

Rarity: Uncommon 1

 

Card Title: Ancestral Recall

Cost: U

Pow/Tgh: n/a

Card Text: Draw 3 cards or force opponent to draw 3 cards.

Artist: Mark Poole

Rarity: Rare 1

 

Now here's the file I'm using:

<?php
$db = "mtg_db";
$table= "mtg_table";
$user = "username";
$pass = "password";
// get info from text file and put it in a mysql table
// run it once only, otherwise you'll get duplicate records

$cards= 10; /*put the number of cards in the text file here*/

$fp=fopen("alpha-beta-unlm.txt","r") or die ("Couldn't open file: "); //the path and name of your text file here
$link=mysql_connect("localhost","$user","$pass");
if (! $link) die("couldn't connect to mysql");
mysql_select_db($db,$link) or die ("couldn't open $db ".mysql_error());

for ($i=0;$i<$cards;$i++)
{
if (fgets($fp,100)=="") continue; // fgets increments each time it's called.
if (fgets($fp,100)==" ") continue; // sometime you need this too.
  				/*preg_replace gets	rid of the extra text, 
			and trim gets rid of any spaces before and after the
			part you want. */
$temp=fgets($fp,100);
$card_name=trim(preg_replace("/Card Title:/","",$temp)); 
echo $card_name."<br>\n";
$temp=fgets($fp,100);
$card_color=trim(preg_replace("/Color:/","",$temp));
echo $card_color."<br>\n";
$temp=fgets($fp,100);
$card_type=trim(preg_replace("/Cart Type:/","",$temp));
echo $card_type."<br>\n";
$temp=fgets($fp,100);
$mana_cost=trim(preg_replace("/Cost:/","",$temp));
echo $mana_cost."<br>\n";
$temp=fgets($fp,100);
$pow_tou=trim(preg_replace("/Pow_Tgh:/","",$temp));
echo $pow_tou."<br>\n";
$temp=fgets($fp,100);
$card_text=trim(preg_replace("/Card Text:/","",$temp));
echo $card_text."<br>\n";
$temp=fgets($fp,100);
$artist=trim(preg_replace("/Artist:/","",$temp));
echo $artist."<br>\n";
$temp=fgets($fp,100);
$set_rarity=trim(preg_replace("/Rarity:/","",$temp));
echo $set_rarity."<br>\n";
/*you can complete the rest of this yourself. Also, increase the limit of
characters for your card_text and flavor_text*/

$query="insert into $table (card_title, color, card_type, cost, pow_tou, card_text, artist, rarity) 
values ('".addslashes($card_name)."',
	'".addslashes($card_color)."', 
	'".addslashes($mana_cost)."', 
	'".addslashes($card_type)."', 
	'".addslashes($pow_tou)."', 
	'".addslashes($card_text)."',
	'".addslashes($artist)."',
	'".addslashes($set_rarity)."') ";
$result=mysql_query($query);
if (!$result) die ("failed on insert ".mysql_error());
}
mysql_close($link);
fclose($fp);
?> 

 

Any idea why I'm losing the Card Title and Cost on the first record?  If I include more data, it does the same thing every other record.

 

And while I'm thinking about it, how can I remove the "Cart Type:", "Cost:", etc,etc from the results and insert?  I've looked up preg_replace, but I don't quite understand how to make it work here.

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

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.