Programozás

Programozással kapcsolatos ötletek, megoldások

Szövegben url-ek linkké alakítása automatikusan php-vel

Szokás fórumokon, vendégkönyvekben a beírt url-eket automatikusan felismertetni és átalakítani kattintható linkké. Erre jól használhatók a reguláris kifejezések. Az első példa rövid, de felismeri a linkeket, amik http-vel, https-el, www-el, wap-al kezdődnek. Viszont ha vessző kerül a végére, mert épp egy tagmondat végén van, vagy pont, esetleg felkiáltó jel, akkor az is bekerül a linkbe.

<?php
$szoveg = "Egy szövegben lehet link https-el kezdődve: https://www.google.com/accounts/ServiceLogin?service=mail
vagy csak http-vel. http://rimelek.hu,
 www.phpstudio.hu "
;

$szoveg = preg_replace("#(\s*)((http(s?)://)|(www\.|wap\.))(\S+\.\S+)#is", "\\1<a href=\"http\\4://\\5\\6\" target='_blank'>\\2\\6</a>", $szoveg);
print $szoveg;
?>

A másik megoldás bonyolultabb, de az írásjeles hibát is megoldja:

<?php
function url2link($matches)
{
        $i = strlen($matches[0]);
        $szoveg = trim($matches[0],',.!');
        $j = strlen($szoveg);
        return preg_replace("#(\s*)(http(s?)://)?(.*)#is",
                "\\1<a href=\"http\\3://\\4\" target='_blank'>\\2\\4</a>",
                $szoveg).substr($matches[0],$i-1,$i-$j);
}

$szoveg = preg_replace_callback("#(\s*)((http(s?)://)|(www\.|wap\.))(\S+\.\S+)#is",'url2link',$szoveg);
print $szoveg;
?>

Megosztás/Mentés

Lapozás PHP-ben

Nem is olyan régen írtam egy blogot a dinamikus több sorba tördelésről. Annak folytatásaként fogható fel ez a kis ismertető. Mert hát nagyon hasznos, hogy 500 ezer képet, vagy adatbázisbeli rekordot meg tudsz jeleníteni egy weboldalon több sorban oszlopokba rendezve, csak hát elég valószínűtlen, hogy azt kibírná a böngészőnk, vagy akár a szerver. De elég, ha csak saját emberi tulajdonságunkra gondolunk, a türelmetlenségre. Mi a megoldás? Természetesen a lapozhatóság megvalósítása. Amire többféle megoldás létezik, és sok fórumon, sok blogban foglalkoztak / foglalkoznak a témával. Némelyik igen szép kinézetet is kap. Osztályokat is írnak rá. Ez alól valószínű én sem leszek kivétel, de addig is nézzünk pár primitívebb módszert.

Az első példa egyszerű tömböt fog használni az adattárolásra. Akár csak a sortörésről szóló blogom első példái is.

Oké. Van egy kérdésem. Mi az első, ami eszedbe jut a lapozással kapcsolatban, és szükséges ahhoz, hogy egyáltalán legyen lapozás? Igen igen. Jól gondolod. Hogy hány elemet akarsz megjeleníteni egy oldalon egyszerre. Akkor add is meg gyorsan. Én tízet választok.

Megosztás/Mentés

Lista megjelenítése táblázattal php-ben

Nos, amire a cím is utal, nem egy nagyon bonyolult probléma, ám annál gyakoribb.
Elég, ha csak egy képgalériát szeretnél, ahol egy sorban maximum 10 képet szeretnél látni, vagy akár annál kevesebbet, függetlenül attól, hogy mekkorák a képek. Adott esetben az egyik sorban lehet, hogy csak 5 kép van, a másikban pedig 6, mert több fért el.

De bármilyen adattömeget szükség lehet ilyen módon megjeleníteni. Legyen az egy webes fájlkezelő, mint például a windows intéző, ahol szintén rendezett módon jelennek meg az ikonok, vagy akár bármilyen adatbázisban tárolt információ.

Erre mutatok pár példát, mert már túl sokszor írtam ezt le különböző fórumokon, és nyilván nem is csak én. De gyakran nehéz rátalálni a probléma megoldására egy fórumban, ahol temérdek kérdés és válasz váltja egymást egyetlen témában.

Megosztás/Mentés

Gömb rajzolása PHP-ben

Gömb logó

Ez a script már régen készült, és közel sem tökéletes megoldásokkal. De mivel újra írni már nincs kedvem, ezért így mutatom meg :)

A bal felső sarokban levő képhez hasonló gömböt, illetve különböző variációit lehet generálni. Minden fontos tulajdonsága beállítható url-ből. Így tesztelhetők a lehetőségek.


Tulajdonságok:

  • Színek:
    Minden szín a következő formában adható meg: RRR,GGG,BBB
    Ahol az egyes betűk az RGB-nek megfelelően a vörös, zöld és kék színek mértékét jelentik 0 és 255 között.

    • fill: Gömb színe (kitöltése)
    • bgcolor: Kép háttere, ha jpeg formátumú
    • border: Választható szegély az alakzatnak
    • monox,monoy: Nevüknek megfelelően vízszintes és függőleges irányban húzott ívek színe. Alapértelmezetten minden ív más színű.
    • _0 -től _7-ig: Az ívek színkészlete változó színek esetén
  • Méretek:

    • space: Az ívek távolsága egymástól pixelben.
    • width: A kép szélessége (Alapértelmezetten azonos a rajz szélességével)
    • height: A kép magassága (Alapértelmezetten azonos a rajz magasságávall)
    • w: A rajz szélessége
    • h: A rajz magassága

  • type: Kép típusa. (jpeg,jpg,png és gif a megengedett)
  • quality: A kép minősége 0 és 100 között. (Csak jpeg formátum esetén)
Megosztás/Mentés

Oszlopgrafika

Jól el lehet szórakozni PHP-ben is a grafikával. Van több olyan grafikai scriptem, ami véletlenül jött létre, mert csak próbálkoztam mindenféle koordinátagenerálással, aztán lett, ami lett. Ilyen a következő képen látható kis ábra is. Egy az egyben PHP-val generálva. Maga az ötlet nem véletlen. De a színek igen.

PHP kép

Forráskód megtekintése:

Megosztás/Mentés

Gömb rajzolása pascalban

Ez egy kis pascal nyelven írt grafikus program, amivel olyasmi alakzatot lehet kirajzoltatni, ami legalább emlékeztet egy gömbre. Konfigurálható a forráskód elején, hogy a gömb milyen paraméterekkel rendelkezzen. Ehhez sajnos újra kell fordítani a programot. Akinek van rá lehetősége, kipróbálhatja.

Letöltés
Képernyőképek:

1. screenshot
2. screenshot

Megjegyzés:
Az egavga.bgi fájlnak az exe mellett kell maradnia!

Megosztás/Mentés

Hibakeresés PHP-ban

Tartalom

Bevezető
Elég gyakori, hogy alapvető hibákat nem találnak meg kezdő, vagy sokszor haladó programozók sem. Ehhez próbálok segítséget nyújtani pár hasznos tanáccsal. Érdemes megfogadni őket. Leginkább PHP-ról fogok szólni a cikkben, de megpróbálok általánosságban is megemlíteni pár dolgot.

Alapvetően kétféle hibát különböztethetünk meg.

  1. Szintaktikai
    Ebben az esetben valószínűleg elírtunk valamit a programkódban, és egy olyan utasítás került a forrásba, ami nem értelmezhető az adott nyelven, vagy lehagytunk egy fontos elemet figyelmetlenségből. Például egy pontosvesszőt az utasítás végén, ha a programnyelv igényli. Ha szintaktikai hibát ejtünk, a program nem fordul le, illetve script nyelv esetén hibaüzenettel leáll értelmezéskor.

  2. Szemantikai
    Meglehet, hogy a kódunk szintaktikailag helyes, és látszólag minden a helyén van, de nem gondoltuk át kellőképpen, hogy mit is szeretnénk megvalósítani. Esetleg nem ismerjük kellőképpen a használt függvények működését, és rossz módszert alkalmazunk, aminek következtében a program bár helyes, tényleg nem azt fogja „művelni” amit elvárnánk tőle.

Nos, egyik esetben sem a számítógépünket kell püfölni, vagy gondolkodás nélkül írni egy fórumra, és leírni, hogy „nem működik, segítsetek”. Első lépés, hogy gondolkodunk magunk, és utánajárunk, miben hibáztunk. Majd csak a második lépés lehet, hogy más segítségét is igénybe vesszük. Elvégre emberek vagyunk. Lehet, hogy nem tűnik fel valami akkor sem, ha szinte kiszúrja a szemünket.

Na de nézzük meg a lehetséges hibajelenségeket, és a hiba detektálásának módjait.

Megosztás/Mentés

Rugalmas nyelvkezelés

Gyakran van szükség arra, hogy egy weboldalt több nyelven jelenítsünk meg.
Ennek ma már több formája is létezik. Az egyik, amikor minden nyelvnek külön fájlt hozunk létre egy languages mappában, és abban egy asszociatív tömbben felsoroljuk az egyes tartalmakat.
Ezzel a módszerrel mutatom meg, hogyan lehet úgy kezelni a nyelveket, hogy amennyiben az alapértelmezett nyelven minden szöveg definiálva van, azon a nyelven jelenjen meg a tartalom, ha a kiválasztott nyelven nem létezik még, vagy szándékosan nem definiáltunk egy értéket. Esetleg maga a nyelv sem létezik, amit megadtunk.

Megosztás/Mentés