Tema de gandire - concurs

Secţiune dedicată începatorilor.

Moderatori: Moderatori, Start Moderator

Avatar utilizator
Birkoff
Senior Member
Mesaje: 6378
Membru din: Joi Mar 18, 2004 2:34 pm
Localitate: Bucuresti
Contact:

Tema de gandire - concurs

Mesajde Birkoff » Mie Sep 18, 2013 3:49 pm

In acest topic vor fi provocari pentru membrii acestei comunitati. Scopul acestui tip de concurs este ca sa invatam unul de la altui diferite moduri de abordare a unei probleme si gasirea celei mai optime solutii.
Concursul consta in propunerea unei probleme si gasirea celei mai optime solutii de rezolvare. Problema poate fi din domeniul web ( php, ajax, sql, html5, css3 etc, precum si din securitate web). Atentie! Nu se pun probleme daca cel care a pus problema nu are deja o solutie la acea problema, pentru a da solutia in cazul in care nimeni nu o gaseste.
Primul care pune problema o sa fiu eu, apoi cel care raspunde primul cu cea mai buna solutie are libertatea sa vina el cu alta provocare.


tema de gandire:

Se da un sir de forma 'ceva.blabla.xx' sau 'abc.cde.fgh.hij' sau 'http://subdomeniu.domeniu.ext/dir1/dir2/'
(stringul este de fapt o adresa url care poate contine doar domeniu si extensia sau poate contine o cale completa catre o pagina)
Se cere cea mai optima solutie care sa returneze din acel string domeniul si extensia cu punct in fata domeniului.
adica .blabla.xx sau .fgh.hij sau .domeniu.ext
fara altceva din acel string

Astept sugestii, apoi vin si eu cu solutia mea :D


1) CMS, ERP, CRM, etc... (doar pentru clienti))
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.

Avatar utilizator
inginerul
Average Member
Mesaje: 111
Membru din: Sâm Dec 01, 2012 11:34 pm
Contact:

Re: Tema de gandire

Mesajde inginerul » Mie Sep 18, 2013 4:20 pm

Cod: Selectaţi tot

<?php
$a = 'http://subdomeniu.domeniu.ext/dir1/dir2/';
$ex = explode('.', $a);
if (stripos($ex[1], '/')) {
   $ex2 = explode($ex[1], '/');
   echo '.'.$ex2[0];
}
else {
   echo '.'.$ex[1];
}
?>

am uitat ceva modific imediat
Ultima oară modificat Mie Sep 18, 2013 4:23 pm de către inginerul, modificat 1 dată în total.

Avatar utilizator
Birkoff
Senior Member
Mesaje: 6378
Membru din: Joi Mar 18, 2004 2:34 pm
Localitate: Bucuresti
Contact:

Re: Tema de gandire

Mesajde Birkoff » Mie Sep 18, 2013 4:22 pm

am gasit o solutie din 8 linii de cod, va dau mai jos exemplificarea pe ce am testat eu si cum trebuie sa arate la final

Cod: Selectaţi tot

$url_list = array(
    'http://google.com',
    'http://localhost:8080/test/project/',
    'http://mail.yahoo.com',
    'http://www.bing.com',
    'http://www.phpromania.net/forum/viewtopic.php?f=24&t=27549',
    'https://prodgame10.alliances.commandandconquer.com/12/index.aspx',
);
// si la final trebuie sa arate asa
Array
(
    [0] => .google.com
    [1] => .localhost
    [2] => .yahoo.com
    [3] => .bing.com
    [4] => .phpromania.net
    [5] => .commandandconquer.com
)


Pentru cine ii plac provocarile cred ca asta e o provocare buna :)
1) CMS, ERP, CRM, etc... (doar pentru clienti))
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.

Avatar utilizator
Birkoff
Senior Member
Mesaje: 6378
Membru din: Joi Mar 18, 2004 2:34 pm
Localitate: Bucuresti
Contact:

Re: Tema de gandire

Mesajde Birkoff » Mie Sep 18, 2013 4:27 pm

inginerul, am pus exemplu de test si cum trebuie sa arate, am testat ce mi-ai dat si nu arata bine :)
uite http://codepad.org/KQ5aP5UI
1) CMS, ERP, CRM, etc... (doar pentru clienti))
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.

Avatar utilizator
inginerul
Average Member
Mesaje: 111
Membru din: Sâm Dec 01, 2012 11:34 pm
Contact:

Re: Tema de gandire

Mesajde inginerul » Mie Sep 18, 2013 4:32 pm

Pai am uitat de extensie. acum daca tot ai postat solutia nu mai are rost. Trebuia sa lasi sa posteze mai multi cate o solutie

Avatar utilizator
Birkoff
Senior Member
Mesaje: 6378
Membru din: Joi Mar 18, 2004 2:34 pm
Localitate: Bucuresti
Contact:

Re: Tema de gandire

Mesajde Birkoff » Mie Sep 18, 2013 4:41 pm

unde vezi tu ca am postat solutia? :P
am pus doar exemplificarea codului tau ca sa vezi cum arata, dar nu e ok asa ca astept si alte solutii
1) CMS, ERP, CRM, etc... (doar pentru clienti))
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.

indexcafea
Average Member
Mesaje: 65
Membru din: Mie Noi 07, 2012 9:18 pm
Contact:

Re: Tema de gandire

Mesajde indexcafea » Mie Sep 18, 2013 6:12 pm

Constrans de timp am facut ceva la repezeala:

Cod: Selectaţi tot

<?php
$a = 'http://www.mail.yahoo.com';
// extragem hostul
$b = parse_url($a);
// transformam in array dupa "."
$c = explode('.', $b['host']);
// extragem domeniul
$domeniu = $c[count($c)-2];
// extragem extensia
$extensie = $c[count($c)-1];
// compunem domeniu + extensie
echo $url_final = '.'.$domeniu.'.'.$extensie;

?>


Am constatat totusi ca nu e perfect. Daca v-a fi o adresa de genul : www.domeniu.com.ro

Avatar utilizator
inginerul
Average Member
Mesaje: 111
Membru din: Sâm Dec 01, 2012 11:34 pm
Contact:

Re: Tema de gandire

Mesajde inginerul » Mie Sep 18, 2013 6:41 pm

Cod: Selectaţi tot

<?php
$a = 'http://subdomeniu.domeniu.ext/dir1/dir2/';
$ex = explode('.', $a);
$ex2 = explode('/', $ex[2]);
if (stripos($ex[2], '/')) {
   echo '.'.$ex[1].'.'.$ex2[0];
}
else {
   echo '.'.$ex[1].'.'.$ex[2];
}
?>

Acum merge.

indexcafea
Average Member
Mesaje: 65
Membru din: Mie Noi 07, 2012 9:18 pm
Contact:

Re: Tema de gandire

Mesajde indexcafea » Mie Sep 18, 2013 6:51 pm

inginerul scrie:

Cod: Selectaţi tot

<?php
$a = 'http://subdomeniu.domeniu.ext/dir1/dir2/';
$ex = explode('.', $a);
$ex2 = explode('/', $ex[2]);
if (stripos($ex[2], '/')) {
   echo '.'.$ex[1].'.'.$ex2[0];
}
else {
   echo '.'.$ex[1].'.'.$ex[2];
}
?>

Acum merge.


Daca link-ul este de forma: http://www.subdomeniu.domeniu.ext/dir1/dir2/ nu mai functioneaza

Avatar utilizator
Birkoff
Senior Member
Mesaje: 6378
Membru din: Joi Mar 18, 2004 2:34 pm
Localitate: Bucuresti
Contact:

Re: Tema de gandire

Mesajde Birkoff » Mie Sep 18, 2013 7:43 pm

astept si alte solutii de la forumisti
1) CMS, ERP, CRM, etc... (doar pentru clienti))
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.

Avatar utilizator
inginerul
Average Member
Mesaje: 111
Membru din: Sâm Dec 01, 2012 11:34 pm
Contact:

Re: Tema de gandire

Mesajde inginerul » Mie Sep 18, 2013 8:04 pm

Cod: Selectaţi tot

<?php
$a = 'http://www.subdomeniu.domeniu.ext/dir1/dir2/';
if (stripos($a, 'www.')) {
   $a = str_ireplace('www.', '', $a);
}
$ex = explode('.', $a);
$ex2 = explode('/', $ex[2]);
if (stripos($ex[2], '/')) {
   echo '.'.$ex[1].'.'.$ex2[0];
}
else {
   echo '.'.$ex[1].'.'.$ex[2];
}
?>

Acum merge, din nou:))

mai am sa-l fac sa mearga pentru link-urile astea:

Cod: Selectaţi tot

    http://google.com
    http://localhost:8080/test/project/
    http://mail.yahoo.com
    https://prodgame10.alliances.commandandconquer.com/12/index.aspx

dar abordarea este alta si nu cred ca am sa o gasesc. mai incerc in alt fel

bema2004sw
Average Member
Mesaje: 50
Membru din: Dum Mai 24, 2009 10:18 pm
Localitate: Pe net ...

Re: Tema de gandire

Mesajde bema2004sw » Mie Sep 18, 2013 9:05 pm

Mie-mi merge asa:


Cod: Selectaţi tot

$domain = str_ireplace('www', '', parse_url($url, PHP_URL_HOST));
$tt=explode('.', $domain);
$string='';

for ($i=count($tt)-2; $i<count($tt); $i++){
   $string.='.'.$tt[$i];
}
echo $string;

indexcafea
Average Member
Mesaje: 65
Membru din: Mie Noi 07, 2012 9:18 pm
Contact:

Re: Tema de gandire

Mesajde indexcafea » Mie Sep 18, 2013 9:50 pm

bema2004sw scrie:Mie-mi merge asa:


Cod: Selectaţi tot

$domain = str_ireplace('www', '', parse_url($url, PHP_URL_HOST));
$tt=explode('.', $domain);
$string='';

for ($i=count($tt)-2; $i<count($tt); $i++){
   $string.='.'.$tt[$i];
}
echo $string;


Aceiasi problema ca si la mine, pentru domenii cu extensie .com.ro nu v-a functiona.
Plus ca pentru localhost adauga ".." in fata

Avatar utilizator
Birkoff
Senior Member
Mesaje: 6378
Membru din: Joi Mar 18, 2004 2:34 pm
Localitate: Bucuresti
Contact:

Re: Tema de gandire

Mesajde Birkoff » Mie Sep 18, 2013 10:33 pm

vreti sa va dau o sugestie de abordare? desi nu ar fi ok ca dupa aia veniti cu aceeasi idee ca a mea...
astept pana maine seara, daca nu mai apar solutii (care sa valideze toate cazurile prezentate de mine mai sus) postez solutia gasita de mine si trecem la o noua provocare.
1) CMS, ERP, CRM, etc... (doar pentru clienti))
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.

LXS
Senior Member
Mesaje: 375
Membru din: Dum Oct 05, 2008 8:34 pm
Localitate: Timisoara
Contact:

Re: Tema de gandire

Mesajde LXS » Mie Sep 18, 2013 10:41 pm

Metoda mea nu functioneaza, probabil ca rezolvarea ar fi asemanatoare.

Cod: Selectaţi tot

$url_list = array(
    'http://google.com',
    'http://localhost:8080/test/project/',
    'http://mail.yahoo.com',
    'http://www.bing.com',
    'http://www.phpromania.net/forum/viewtopic.php?f=24&t=27549',
    'https://prodgame10.alliances.commandandconquer.com/12/index.aspx',
);

function size($list)
{
    $i=0;
   while($list[++$i]!=NULL);
   return $i;
}

function url_Host($list)
{
    $listSize = size($list)-1;
   do
   {
      $strSize = size($list[$listSize]);
      $points = 0;
      $dpoints = 0;
      $tmpString = '';
      do
      {
         $currentChar = $list[$listSize][$strSize];
         if(ord('.')==ord($currentChar))
         {
            $tmpString .= '.';
            $points++;
         }
         else if(ord(':')==ord($currentChar))
         {
            $tmpString .= ':';
            $dpoints++;
         }
      }while($list[$listSize][--$strSize]!=NULL);
      print $tmpString;
      $strSize = size($list[$listSize]);
      $tmpString = '';
      do
      {
         $slice = false;
         $currentChar = $list[$listSize][$strSize];
         if($dpoints > 2)
         {
            if(ord('\\')==ord($curentChar)) $slice = true;
            $tmpString .= '';
         }
      }while($list[$listSize][--$strSize]!=NULL);
      print $tmpString."<br />";
   }while($list[--$listSize]);
}

url_Host($url_list);



Vreau sa vad rezolvarea, ma incurca faptul ca sunt prea multi delimitatori.


Înapoi la “PHP Incepători”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Bing [Bot] și 1 vizitator