PHP replace
Jeg har en flash-app som forbinder til en database via php. Det virker fint - men nu har jeg brug for at hente kun én enkelt del fra min databse, og da jeg i sin tid satte det op lavede jeg muligvis en lidt dum ting... som jeg nu håber at nogen kan hjælpe mig ud af!?Jeg skriver til en database i 4 forskellige rækker:
name, email, comments, time
(Det er en gæstebog app som jeg har lavet om til en blog, men jeg har bibeholdt de gamle navne)
I "name" er overskriften på seneste indlæg på min blog (og her kommer dumheden:) og et billede, indsat som <img src=...>
Nu vil jeg høre om man kan lave en php-replace funktion som henter "name", men fjerner alt andet end tagget <img src=...>?
Her er min php-kode:
(det er samme php-som bruges til at skrive til databasen. I denne henter den kun seneste entry i rækken "name" og gør teksten hvid i font "-7". Det er ikke helt optimalt!)
<?
// Part One - Initiate a mySQL Database Connection
// Database Connectivity Variables and other Variables
$DBhost = "localhost"; // Database Server
$DBuser = "domain_com"; // Database User
$DBpass = "password"; // Database Pass
$DBName = "domain_com"; // Database Name
$table = "blog"; // Database Table
$numComments = 1; // Number of entries per page
// Connect to mySQL Server
$DBConn = mysql_connect($DBhost,$DBuser,$DBpass) or die("Error in App: " . mysql_error());
// Select mySQL Database
mysql_select_db($DBName, $DBConn) or die("Error in App: " . mysql_error());
// Part Two - Choose what action to perform
$action = $_GET['action'];
switch($action) {
case 'read' :
// Fetch all comments from database table
$sql = 'SELECT * FROM `' . $table . '`';
$allComments = mysql_query($sql, $DBConn) or die("Error in App: " . mysql_error());
$numallComments = mysql_num_rows($allComments);
// Fetch page-wise comments from database table
$sql .= ' ORDER BY `time` DESC LIMIT ' . $_GET['NumLow'] . ', ' . $numComments;
$fewComments = mysql_query($sql, $DBConn) or die("Error in App: " . mysql_error());
$numfewComments = mysql_num_rows($fewComments);
// Generate Output for Flash to Read
print '&totalEntries=' . $numallComments . '&';
print "&entries=";
if($numallComments == 0) {
print "Ingen 'data'...";
} else {
while ($array = mysql_fetch_array($fewComments)) {
$name = mysql_result($fewComments, $i, 'name');
print '<p align="center"><font size="-7" COLOR="#ffffff">' . $name . '</font></p>';
$i++;
}
}
// Print this only when there aren't any more entries..
if($_GET['NumLow'] > $numallComments) {
print 'No More Entries!&';
}
break;
case 'write' :
// Recieve Variables From Flash
$name = ereg_replace("&", "%26", $_POST['yourname']);
$email = ereg_replace("&", "%26", $_POST['youremail']);
$comments = ereg_replace("&", "%26", $_POST['yourcomments']);
$submit = $_POST['submit'];
// Current system date in yyyy-mm-dd format
$submitted_on = date ("Y-m-d H:i:s",time());
// Check if its submitted from Flash
if($submit == 'Yes'){
// Insert the data into the mysql table
$sql = 'INSERT INTO ' . $table .
' (`ID`,
`name`,
`email`,
`comments`,
`time`
)
VALUES
(\'\','
. '\'' . $name . '\','
. '\'' . $email . '\','
. '\'' . $comments . '\','
. '\'' . $submitted_on . '\'
)';
$insert = mysql_query($sql, $DBConn) or die("Error in GuestBook Application: " . mysql_error());
print "&gb_status=Entry er oprettet.&done=yes&";
return;
}
print "&_root.write.gb_status=Error!&";
break;
}
?>
Et eksempel på "name" er:
Google - opdatering <img src="http://domæne.dk/content/google.png" align="right">
Jeg ville meget gerne have fjernet alt andet end:
<img src="http://domæne.dk/content/google.png" align="right">
Og meget gerne omskrevet til:
<img src="http://domæne.dk/content/google.png">
Jeg går ud fra at du/i kan gætte jer til at både teksten og img-url er forskellig fra gang til gang!
Det er vist en ordenlig mundfuld - men kan du hjælpe mig er der gode point!!!