Konwerter - kanapka - 18-05-2011
Witajcie,
potrzebuję Waszej pomocy przy doborze funkcji do napisania konwertera. Najlepiej prosiłbym o wskazówki.
Kod, który wpuszczamy w konwerter:
Kod: <object id="nie potrzebne" doublesided="nie potrzebne" model="MODELID" interior="nie potrzebne" dimension="nie potrzebne" posX="POS_X" posY="POS_Y" posZ="POS_Z" rotX="ROT_X" rotY="ROT_Y" rotZ="ROT_Z" />
Potrzebuję przenieść do tablicy wartości, które!="nie potrzebne"., czyli kod, który wyjdzie powinien wyglądać tak:
Kod PHP: $array=array( "model"=>"MODELID", "posX"="POS_X", "posY"="POS_Y", "posZ"="POS_Z", "rot_X"="ROT_X", "rot_Y"="ROT_Y", "rot_Z"="ROT_Z" );
Myślałem, aby zrobić to na zasadzie BBCode, lecz nie wiem jak dalej podzielić kod na odcinki.
Kod: $replacement=array(
//Niepotrzebne
"/\<object id=\"(.*?)\\"\/is" => null,
"/\doublesided=\"(.*?)\\"/is" => null,
"/\dimension=\"(.*?)\\"/is" => null,
"/\interior=\"(.*?)\\"/is" => null,
" />"=>null,
//Potrzebne
"/\model=\"(.*?)\\"\/is" => "$1,",
"/\posX=\"(.*?)\\"\/is" => "$1,",
"/\posY=\"(.*?)\\"\/is" => "$1,",
"/\posZ=\"(.*?)\\"\/is" => "$1,",
"/\rotX=\"(.*?)\\"\/is" => "$1,",
"/\rotY=\"(.*?)\\"\/is" => "$1,",
"/\rotZ=\"(.*?)\\"\/is" => "$1"
);
preg_replace($mybb->input['text'], $replacement, $string);
Wtedy kod wyjdzie nam w postaci:
Kod: $string="model,posX,posY,posZ,rotX,rotY,rotZ";
Lecz jak to teraz dać w tablicę? Liczę na pomoc.
RE: Konwerter - kmd - 21-05-2011
Wykorzystaj funkcję explode rozbijając zmienną na części.
Kod: $rozbicie = explode(",",$string);
http://php.net/manual/en/function.explode.php
Pierwszy przykład z powyższego linku:
Kod: // Example 1
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2
Jak widzisz przy użyciu funkcji explode została stworzona tablica.
RE: Konwerter - kanapka - 21-05-2011
Załóżmy mam taki kodzik. Teraz ostatnie pytanie. Jak policzyć liczbę takich ciągów("<object id="wartosc" doublesided="wartosc" model="wartosc" interior="wartosc" dimension="wartosc" posX="wartosc" posY="wartosc" posZ="wartosc" rotX="wartosc" rotY="wartosc" rotZ="wartosc" />"). Z góry dzięki za pomoc. 
Kod PHP: $i=0; while($i>=$liczbalini) { $replacement=array( //Niepotrzebne "/\<object id=\"(.*?)\\"\/is" => null, "/\doublesided=\"(.*?)\\"/is" => null, "/\dimension=\"(.*?)\\"/is" => null, "/\interior=\"(.*?)\\"/is" => null, " />"=>null, //Potrzebne "/\model=\"(.*?)\\"\/is" => "$1,", "/\posX=\"(.*?)\\"\/is" => "$1,", "/\posY=\"(.*?)\\"\/is" => "$1,", "/\posZ=\"(.*?)\\"\/is" => "$1,", "/\rotX=\"(.*?)\\"\/is" => "$1,", "/\rotY=\"(.*?)\\"\/is" => "$1,", "/\rotZ=\"(.*?)\\"\/is" => "$1" ); $string=preg_replace($mybb->input['text'], $replacement, $string); $array=explode(",", $string); $array2=array( "model"=>$array['0'], "posX"=>$array['1'], "posY"=>$array['2'], "posZ"=>$array['3'], "rotX"=>$array['4'], "rotY"=>$array['5'], "rotZ"=>$array['6'], "owner"=>$char['uid'], "ownertype"=>"1" ); $db->insert_query("game_objects",$array2"); $i++; }
|