| Autor | Zpráva | ||
|---|---|---|---|
| dzutango Profil * |
#1 · Zasláno: 26. 3. 2012, 15:21:44
Jsem začáteční a naprogamoval jsem si následující skript. Přikazy jsou:
Projdi adresar, pokud najdes soubor a nejsi to ty, tak se podivej zda se v nem nenachazi "<div class="upozorneni">#1</div>", pokud ano, uloz nazev souboru a text z <h1>...</h1> do pole $prislusenstvi , pokud ne uloz nazev souboru a text z <h1>...</h1> do pole $soubory.. Pak oboje pole setřiď podle abecedy. Kod je funkční, zajímá mě jen ,jestli by to šlo udělat lépe. <?php
$i=0;
$a=0;
$y=0;
$b=0;
$adresar = opendir(".");
while ($soubor = readdir($adresar)) {
if(is_file($soubor) and $soubor!="index_php.php"){
$text=file_get_contents($soubor, "r");
if (preg_match('|<div class="upozorneni">#1</div>|', $text, $matches)) {
$prislusenstvi[$y][$b]=$soubor;
$b++;
$text=file_get_contents($soubor, "r");
// echo($soubor) //kontrola nacteni obsahu souboru do promene v php
preg_match('|<h1>([^<]*)</h1>|', $text, $matches); /* funkce pro hledani retezce*/
//echo($a . " " . $i . "<br>");
$prislusenstvi[$y][$b] = $matches[1];
$b=0;
$y++;
}
else{$soubory[$i][$a]=$soubor;
$a++;
$text=file_get_contents($soubor, "r");
// echo($soubor) //kontrola nacteni obsahu souboru do promene v php
preg_match('|<h1>([^<]*)</h1>|', $text, $matches); /* funkce pro hledani retezce*/
//echo($a . " " . $i . "<br>");
$soubory[$i][$a] = $matches[1];
$a=0;
$i++;}
}}
closedir($adresar);
sort($soubory);
sort($prislusenstvi);
print_r($soubory); //kontrolni vypis pole*/
print_r($prislusenstvi);
?> |
||
| Nox Profil |
#2 · Zasláno: 26. 3. 2012, 16:32:54
No vylepšovat jde vše, no pokud se sám chceš zlepšovat, tak:
Začal bych nějakým zpřehledněním; sladěním formátování (mezery, odsazení, nové řádky...); přejmenováním proměnných $i, $a, $y, $b na smysluplnější; pokud kontroluješ jen existenci, nemusí mít preg_match 3. argument ... a většinou se upřednostňují str* (nebo str_*) funkce (tady strpos), ale slyšel jsem o případech, kdy byl regulár paradoxně rychlejší Z nějakého důvodu je tam načítání z toho stejného souboru 3x |
||
| dzutango Profil * |
#3 · Zasláno: 26. 3. 2012, 18:42:16
Nox:
Díky, většinu jsem upravil ,jen mě nenapadá jak pojmenovat $i, $a, $y, $b :D |
||
| dzutango Profil * |
#4 · Zasláno: 27. 3. 2012, 11:54:48
Ještě dotaz, jakto že nevadí když je v html místo
<div class="upozorneni">#1</div> ALE <div class="upozorneni"> #1 </div>
Myslel jsem že s tím bude problém. |
||
| Nox Profil |
#5 · Zasláno: 27. 3. 2012, 14:51:15
Je otázka, jestli to má brát oboje, nebo jen to první. Podle zadání striktně jen to první a tak by to i mělo fungovat podle tohodle skriptu. Pokud i druhé, přidalo by se \s* kolem #1
|
||
| dzutango Profil * |
#6 · Zasláno: 28. 3. 2012, 16:19:56
Teď to právě bere oboje, což chci..
|
||
|
Časová prodleva: 14 let
|
|||
0