» »

[PHP] Rezanje stringov ter nekaj malenkosti

[PHP] Rezanje stringov ter nekaj malenkosti

roli ::

Torej imam en majčken problem, ki ga iz nekega razloga ne znam rešit. Kljub temu, da sem ga nekoč znal.
Torej v neki spremenljivki imam narejeno takole: [XXX] blalbla
Jaz želim, da programček preveri kaj je v tisti spremenljivki in prikaže pravo stvar. To sem naredil. Sedaj pa želim, da tisti del z oklepaji odreže in rezultat shrani v enako spremenjlivko.

Drugo vprašanje pa se tiče raznih PHP Frameworkov. Kaj slučajno priporočate, zakaj bi bilo kaj takega dobro uporabiti (to delno že vem), ter kake so razlike med navadnim PHPjem in tistim v Frameworku (tole se mi zdi, da zveni malo zmešano) ... Torej nekaj več informacij.
http://www.r00li.com

Kami ::

Zadevo lahko preprosto rešiš s substrs in strpos:

$newstring = substr($string, strpos($string, "["), strpos($string, "]") + 1);

V primeru, da ti ne ustreza ali pa rabiš kaj boljšega pa lahko uporabiš regularne izraze.

Glede frameworkov ti priporočam, da preizkusiš naslednje in se potem sam odločiš:

1. Symfony
2. CodeIgniter (tega uporabljam sam in meni osebno najbolj odgovarja)
3. CakePHP
4. Zend Framework

Res je, da jih je veliko ampak napisal sem samo te, ki se meni zdijo najboljši in jih uporablja največje število PHP programerjev.

Seveda pa dokler ne boš sam ugotovil in na lastni koži izkusil zakaj je boljše uporabiti framework nima smisla podajati nekih teorij in definicij.
Po domače: če si tako kot trenutno delaš in pišeš kodo zadovoljen in ne delaš nekakšnih kompleksnih stvari potem bi ti framework najverjetneje bil samo v napoto.

roli ::

No ja kaj je preprosto je malo X definicija. Trenuntno delam plugin za Konzole Slovenija - plugin za Subdreamer CMS s popolnoma posebno funkcionalnostjo in ima kar krepkih 3166 vrstic kode. Največji problem je, ker se vse skupaj ponavlja. Pa imaš kodo, ki naredi praktično enako pa je vseeno ponovljena, ker je neka malenkost spremenjena. Verjetno pa ti frameworki vsi uporabljajo Objektno orientiran pristop? Kar mi niti pod razno ni všeč.

Glede rezanja - bom preizkusil in videl, če dela kot mora.
http://www.r00li.com

Pegaz ::

Priporočam ti CakePHP. Namenjen je začetnikom in zahtevnejšim programerjem. Veliko ljudi ga uporablja, tudi v Sloveniji. Pri CodeIgniterju sem dobil občutek, da je namenjen le začetnikom, pri Symfoniyu pa ravno obratno.

Frameworki so zelo uporabna stvar in ko enkrat sprobaš se ti zdi pisanje kode "from scratch" neumno. Zelo ti pohitrijo razvoj, downside pa je, da se moraš naučit nekaj več sintakse.

Glede "[XXX]" pa pogooglaj za regexi (Regular Expressions). Regexi so zelo uporabni in se ti jih splača naučit.

Edit:
Če delaš plugin za neko zadevo verjetno sploh ne rabiš frameworka - če bi delal celoten portal bi pa uporabil framework.

Ravno ena od lastnosti objektivnega programiranja je, da se koda ne (oz. naj se ne bi) ponavlja.

Zgodovina sprememb…

  • spremenil: Pegaz ()

roli ::

Ta plugin sicer ni ravno neki plugin - pa tudi verjetno ni edina stvar, ki jo bom kadarkoli naredil.
V resnici je plugin, ki uporablja subdreamer portal samo za prikaz ter za osnovne podatke o bazi. Vse ostalo je moje in bi lahko stvar hitro predelal za delo kot samostojen sistem.

Kar se OOPja tiče - sem se malo narobe izrazil sedaj moram namreč pisati kodo za praktično enako stvar 100x ter dodati kako stvar sem in tja medtem, ko bi lahko pri OOP uprabil isto kodo večkrat. Vsaj kolikor jaz razumem.

@Kami: Tisti del kode ne deluje tako kot hočem. Jaz hočem odrezati stran to kar je v oklepaju ter seveda oklepaje ostalo pa pustiti. Tvoja koda odreže ostalo pa pusti oklepaje pri miru.
http://www.r00li.com

Zgodovina sprememb…

  • spremenil: roli ()

PaX_MaN ::

$newstring = substr($string, strpos($string, "]") +1, strlen($str)-1);

roli ::

Ok tole je delovalo! Hvala!

Drugače pa spet nek nov XXX problem. NAredil sem konverter, ki bi moral iz enega bolj kot ne custom sistema prenesti podatke v drugega - temelječega na phpbb3. Problem je, ko jaz to skripto zaženem, da se ne zgodi nič. Samo bela stran. Nobenega errorja ali karkoli.

Tole je koda (sicer je verjetno za zjokat ampak mislim, da bi vseeno morala delovati):
<?php
echo "Prenos se začenja..... <br />";
$connect1 = mysql_connect('localhost','xxxxx','xxxxx') or die(mysql_error());
$connect2 = mysql_connect('localhost','xxxx','xxxxx') or die(mysql_error());
mysql_select_db('konzolesi_v2 ', $connect1) or die(mysql_error());

$baza1_org = mysql_query("SELECT storyid,uid,title,created,hometext,bodytext FROM xoops_stories ORDER BY storyid ASC") or die(mysql_error());

echo "Začenjam prenos baze <br />";
while ($baza1 = mysql_fetch_array($baza1_org))
{
$user = $baza1['uid'];
$naslov = $baza1['title'];
$datum = $baza1['created'];
$tekst = $baza1['hometext'].$baza1['bodytext'];

$userime = mysql_query("SELECT * FROM phpbb_users WHERE user_id = '$user'") or die(mysql_error());
$userime_new = mysql_fetch_array($userime);

$post_id = 55241++;
mysql_select_db('konzolesi_ksi3', $connect2) or die(mysql_error());

mysql_query("INSERT INTO phpbb_topics (forum_id, icon_id, topic_approved, topic_reported, topic_title, topic_poster, topic_time, topic_time_limit,
 topic_views,topic_replies, topic_replies_real, topic_status, topic_type, topic_first_post_id, topic_first_poster_name, 
topic_first_poster_colour, topic_last_post_id,topic_last_poster_id, topic_last_poster_name,
 topic_last_poster_colour, topic_last_post_subject, topic_last_post_time, topic_last_view_time, topic_moved_id,
 topic_bumped, topic_bumper, poll_start, poll_length, poll_max_options, poll_last_vote, poll_vote_change) VALUES 
('31', '0', '1', '0', '$naslov', '$user', '$datum', 
'0', '1', '0', '0', '0', '0', '$post_id', '$userime_new', '000066', '$post_id', '$user', '$userime_new', '000066',
 '$naslov', '$datum', '$datum', '0', '0', '0', '0', 
'0', '1', '0', '0'  )") or die(mysql_error());

}
echo "Prenos je bil uspešno končan!";


?>


Torej kaj zaboga je tukaj narobe?
http://www.r00li.com

krho ::

U fino....
'; DROP DATABASE konzolesi_ksi3;--

:D
si.Mail odprto-kodni odjemalec elektronske pošte. - http://www.simail.si
Uredite si svojo zbirko filmov, serij in iger - http://xcollect.sf.net

Zgodovina sprememb…

  • spremenil: krho ()

R33D3M33R ::

Verjetno to:

Parse error: syntax error, unexpected T_INC in X.php on line 20

Tisti ++ moti
Moja domača stran: http://andrej.mernik.eu
Na spletu že od junija 2002 ;)
:(){ :|:& };:

Ziga Dolhar ::

Urg. Sicer ze tri leta ne programoram, ampak ...

55241++

A ni to like tko, da poskusas spremeniti konstanto?
https://dolhar.si/

R33D3M33R ::

Hm, če bi želel povečevati post_id, daj nad while

$post_id = 55241;

in v while zanki

$post_id++;
Moja domača stran: http://andrej.mernik.eu
Na spletu že od junija 2002 ;)
:(){ :|:& };:

roli ::

OMG! Res sem bumbar! Kot, da bi prvič videl programski jezik.

No ja to sem popravil ampak stvar še vedno nima željenega učinka. Dobim Prenos se žačenja... in fertik. Ne gre naprej. Res pa je, da je to prvi converter, ki ga delam tako, da nimam s tem ravno nekih izkušenj. Če bi bila kje napaka pri povezavi bi verjetno dobil kak error? Ker tudi z dvema podatkovnima bazama naenkrat nisem še nikoli delal.
http://www.r00li.com

Zgodovina sprememb…

  • spremenil: roli ()

PaX_MaN ::

Če ti ne izpiše niti "Začenjam prenos baze", je lahko problem v queryju ($baza1_org). Stestiraj jo v phpMyAdminu ali čem podobnem.
Izpisovanje napak ti lahko preprečuje tudi same PHP nastavitve - poglej, če je kje v kodi tale vrstica:
ini_set("display_errors", "Off");

R33D3M33R ::

A si 100%, da je presledek v 'konzolesi_v2 ' OK?
Moja domača stran: http://andrej.mernik.eu
Na spletu že od junija 2002 ;)
:(){ :|:& };:

roli ::

Sem že pogruntal! Tam kjer je bilo vpisano or die(mysql_error()); sem namreč v notranji oklepaj pozabil vpisat katero povezavo naj uporabi. Tako sem prišel do napak - pozabil sem dodati mysql_real_escape_string. Po tem pa se je skripta izvedla kot bi se morala. Sicer sem porguntal, da sem tako prenesel le naslove novic ne pa tudi same novice, ker so le te v ločeni tabeli. Tako, da bo potrebno očitno še nekaj dela s tem.
http://www.r00li.com

Zgodovina sprememb…

  • spremenil: roli ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Framework

Oddelek: Izdelava spletišč
212570 (1110) techfreak :)
»

Izšel PHP 5.5

Oddelek: Novice / Ostala programska oprema
115150 (3840) technolog
»

Ideje za PHP aplikacije

Oddelek: Programiranje
142101 (1701) Marat
»

PHP in objektno programiranje (strani: 1 2 )

Oddelek: Programiranje
8512027 (10494) kivi113
»

Časovna banka

Oddelek: Izdelava spletišč
132029 (1460) MrBrdo

Več podobnih tem