kameleon |
01. 02. 2010. 18:59 |
Problem sa našim slovima u PHP skripti
Imam dva problema:
napravio sam PHP skriptu koja sa dva klika mišem odn. jednim klikom mišem (aktivira se preko JavaScript koda u Bookmark-u Firefox-a) parsira željeni članak sa sajta rtrs.tv i ubacuje ga u html formu skripte, a zatim drugim klikom mišem na dugme "submit" ubacuje članak u Joomla-inu bazu podataka (da ne bih morao po ko zna koliko puta preko copy&paste prebacivati pojedine dijelove članka u Joomla backend, pa još to ide i jako sporo - ovako mogu da ubacim veći broj članaka za desetak minuta, odn. za šta bi mi inače trebalo 2 sata).
Ovo je kod skripte:
PHP kôd:
<?php if(isset($_POST['add'])) { $dbhost = 'localhost'; $dbuser = 'user'; $dbpass = 'password'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' . mysql_error()); }
if(! get_magic_quotes_gpc() ) { $title = addslashes ($_POST['title']); $alias = addslashes ($_POST['alias']); $introtext = addslashes ($_POST['introtext']); $fulltext = addslashes ($_POST['fulltext']); $state = addslashes ($_POST['state']); $sectionid = addslashes ($_POST['sectionid']); $catid = addslashes ($_POST['catid']); $created = addslashes ($_POST['date']); $created_by = addslashes ($_POST['created_by']); $modified = addslashes ($_POST['modified']); $modified_by = addslashes ($_POST['modified_by']); $publish_up = addslashes ($_POST['date']); $attribs = addslashes ($_POST['attribs']); $version = addslashes ($_POST['version']); $metadata = addslashes ($_POST['metadata']); } else { $title = $_POST['title']; $alias = $_POST['alias']; $introtext = $_POST['introtext']; $fulltext = $_POST['fulltext']; $state = $_POST['state']; $sectionid = $_POST['sectionid']; $catid = $_POST['catid']; $created = $_POST['date']; $created_by = $_POST['created_by']; $modified = $_POST['modified']; $modified_by = $_POST['modified_by']; $publish_up = $_POST['date']; $attribs = $_POST['attribs']; $version = $_POST['version']; $metadata = $_POST['metadata']; }
$metakey = $title . ' - ' . $alias; $metadesc = $metakey;
$ordering = 1;
$sql = "UPDATE jos_content SET ordering = ordering + 1 WHERE sectionid = '$sectionid' AND catid = '$catid' AND ordering > 0";
mysql_select_db('database'); $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not enter data: ' . mysql_error()); } echo "Updated database successfully, \n";
$sql = "INSERT INTO jos_content (title, alias, introtext, `fulltext`, `state`, `sectionid`, `catid`, `created`, `created_by`, `modified`, `modified_by`, publish_up, attribs, version, ordering, metakey, metadesc, metadata) VALUES ('$title', '$alias', '$introtext', '$fulltext', '$state', '$sectionid', '$catid', '$created', '$created_by', '$modified', '$modified_by', '$publish_up', '$attribs', '$version', '$ordering', '$metakey', '$metadesc', '$metadata')"; mysql_select_db('database'); $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not enter data: ' . mysql_error()); } echo "Entered data successfully\n";
mysql_close($conn); } else { ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Parse and Add article in Joomla database</title> </head> <body> <?php
// get the HTML $address = $_GET['address'];
$html = file_get_html("$address");
// Dump contents (without tags) from HTML
// Find all element with class nwz1 $title = $html->find('.nwz1'); $title = strip_tags($title[0]);
$alias = $title; $alias = str_replace(" ", "-", $alias);
$unwantedchars = array("Č", "č", "Ć", "ć", "Đ", "đ", "Š", "š", "Ž", "ž", "J", "--", "---"); $replacingchars = array("C", "c", "C", "c", "DJ", "dj", "S", "s", "Z", "z", "j", "-", "-"); $alias = str_replace($unwantedchars, $replacingchars, $alias); $alias = preg_replace('/["!?$%(),:;<>&*~|#]/', '', $alias); // PROBLEM SA SLOVOM j NASTAJE U OVOM DIJELU $alias = strtolower($alias);
$introtext = $html->find('.nwz2'); $introtext = strip_tags($introtext[0]);
$fulltext = $html->find('.nwz3'); $fulltext = strip_tags($fulltext[0]); // $textsignature = strip_tags($fulltext[1]);
$source = $html->find('.px11'); $source = strip_tags($source[0]); if (strstr($source, "Izvor: RTRS")) $source = $source; else $source = $source . "\n" . "Izvor: RTRS";
$source_test = $source;
?>
<form action="<?php $_PHP_SELF ?>" id="form" name="form" method="POST"> <p><input name="title" type="text" id="title" value="<?php echo $title; ?>" size="90" /> title</p> <p><input name="alias" type="text" id="alias" value="<?php echo $alias; ?>" size="90" /> alias</p> <p><select name="catid"> <option value="1">vijesti</option> <option value="2">sport</option> <option value="3">zanimljivosti</option> <option value="11">privreda</option> <option value="12">kultura</option> </select> category</p> <p><textarea name="introtext" cols="50" rows="3" id="introtext"><?php echo $introtext; ?></textarea> introtext</p> <p><input name="state" type="hidden" id="state" value="1" /> <input name="sectionid" type="hidden" id="sectionid" value="1" /> <input name="created_by" type="hidden" id="created_by" value="62" /> <input name="modified_by" type="hidden" id="modified_by" value="62" /> <input name="version" type="hidden" id="version" value="2" /> </p> <p><textarea name="fulltext" cols="50" rows="10" id="text"><?php echo $fulltext . "\n\n" . $source; ?></textarea> text </p> <p><input name="date" type="text" id="date" value="<?php echo date("Y-m-d H:i:s"); ?>" size="20" /> date & time</p> <p><textarea name="attribs" rows="1" id="attribs">show_title= link_titles= show_intro= show_section= link_section= show_category= link_category= show_vote= show_author= show_create_date= show_modify_date= show_pdf_icon= show_print_icon= show_email_icon= language= keyref= readmore=</textarea> <textarea name="metadata" rows="1" id="metadata">robots= author=</textarea></p>
<p><input type="submit" name="add" value="Submit" /></p> </form> <?php } ?>
</body> </html>
1. Imam problem sa našim slovima. Kada skripta izparsira neki članak, i ubaci ga u formu - nastaju problemi sa nekim našim slovima
recimo namjesto malog slova 'j' u formi u polju 'alias' mi se pojavi veliko slovo 'J'. (a kada skriptu izvrsim na svom web serveru t.j. localhost-u namjesto malog slova 'j' pojavi se nekakav simbol (crni romb sa upitnikom u sebi)??
2. a drugi problem je da kada članak ubacim u bazu podataka klikom na 'Submit' forme, u bazi podataka u phpmyadmin-u dobijem ovo:
namjesto svih naših kvakastih slova se pojave neka čudna slova, kao na primjer:
title:
USVOĐˆEN ZAKON O ODUZIMANJU IMOVINE STEÄŒENE IZVRĹ ENJEM KRIVIÄŒNOG DĐˆELA
introtext:
Narodna skupština Republike Srpske usvojila je ju�e Zakon o oduzimanju imovine ste�ene izvršenjem krivi�nog djela koji predviđa osnivanje agencije za upravljanje oduzetom imovinom u sastavu Ministarstva pravde RS.
Collation baze podataka je podešen na utf8_general_ci
MySQL charset je UTF-8 Unicode (utf8)
Kako ta skripta radi na djelu može se vidjeti na adresi:
http://balkan-online.com/test.php?ad...t.php?id=15240
Skripta parsiranje radi uz pomoć "PHP Simple HTML DOM Parser"-a
PHP Simple HTML DOM Parser
http://simplehtmldom.sourceforge.net/manual.htm
testirajući sam otkrio da prvi problem sa zamjenom slova j je na ovoj liniji:
$alias = strtolower($alias);
Zahvaljujem se unaprijed na pomoći i na odgovorima
|