Słowo kluczowe: php


10 maja 2017 (środa), 18:45:45

Nowy soft do obsługi mojego bloga

No i stało się. Dziś rozstaję się z moim starym, napisanym w czystym PHP, gdzieś w 2005 roku kodem i przechodzę na Symphony 2.0.

Jak teraz jest to zrobione?

 Tyle o sprzęcie, a teraz o ludziach:

  • zakodował mi to Kuba
  • Łukasz próbował nauczyć mnie bootstrapa ale stać mnie tylko na skopiowanie wyglądu starej Wikipedii (stary blog też tak wyglądał)
  • czasem Max pomaga mi w administrowaniu

Zobaczymy ile wytrzyma ta wersja.

Póki co notek jest około ... nie pamiętam polecania w SQL aby to sprawdzić, ale dużo.

Dopisek z 2021:

  • troszkę drobnych zmian się w międzyczasie zrobiło
  • w lecie 2021 na moją prośbę Kuba coś tu pozmienia. Powinna o tym powstać nowa notka. Może powstanie.

Kategorie: osobiste, _blog


Słowa kluczowe: blog, php, programowanie


Komentarze: (1)

Rafał, May 16, 2017 23:14 Skomentuj komentarz


Symfony, a nie "Symphony" :-)

Czy kanał RSS również jest do zrobienia?

Skomentuj notkę
30 grudnia 2005 (piątek), 22:26:26

Blox.pl API

API Blox.pl

Zachowuje sobie strone API blox.pl aby jej potem nie szukac. Oryginalnie opublikowana byla tu: http://blox.pl/html?page=apiBlox

Strona ta przeznaczona jest dla programistów chcących tworzyć aplikacje, które umożliwiają zarządzanie blogiem w serwisie blox.pl z pominięciem interfejsu www. Program taki może komunikować się z serwisem blox.pl bezpośrednio przy pomocy API Blox.pl. Interfejs serwisu oferuje następującą funkcjonalność:
  • pobieranie listy blogów użytkownika
  • pobieranie listy ostatnich notek z danego bloga
  • tworzenie, edycji i kasowanie notek
  • ładowanie plików binarnych
API Blox.pl zostało stworzone w oparciu o technologię XML-RPC. Pisząc interfejs wzorowaliśmy się na Blogger API oraz MetaWeblog API, metody API Blox.pl są więc w obu przypadkach z nimi kompatybilne.
Z API Blox.pl korzysta między innymi program Bloxer.

Żądania wywołania metod XML-RPC powinny być kierowane na adres URI: http://www.blox.pl/xmlrpc

Obsługiwane przez blox.pl metody z Blogger API:

blogger.newPost - wysyła nową notkę na bloga

parametry wywołania:
  1. <string> appkey ignorowany
  2. <string> blogid nazwa bloga, do którego będzie wysłana nowa notka, np. dla bloga o adresie xyz.blox.pl będzie to xyz
  3. <string> username login właściciela/administratora/użytkownika bloga (ale nie czytelnika)
  4. <string> password hasło użytkownika
  5. <string> content treść notki
  6. <boolean> publish czy wpis ma być opublikowany (true) czy zapisany jako szkic (false)
zwraca <string> identyfikator nowego wpisu lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC


blogger.editPost - modyfikuje istniejącą notkę

parametry wywołania:
  1. <string> appkey ignorowany
  2. <string> postid identyfikator liczbowy modyfikowanej notki
  3. <string> username login właściciela/administratora bloga lub autora notki
  4. <string> password hasło użytkownika
  5. <string> content treść notki
  6. <boolean> publish czy wpis ma być opublikowany (true) czy zapisany jako szkic (false)
zwraca <boolean> true jeśli notka została pomyślnie zmodyfikowana, false w przeciwnym wypadku lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC


blogger.getPost - pobiera notkę z bloga

parametry wywołania:
  1. <string> appkey ignorowany
  2. <string> postid identyfikator liczbowy notki
  3. <string> username login właściciela/administratora bloga lub autora notki
  4. <string> password hasło użytkownika
zwraca notkę jako <struct> tablicę z wartościami przypisanymi do kluczy:
<string> "content" - treść
<string> "userid" - login autora
<string> "postid" - identyfikator notki
<string> "dateCreated" - data utworzenia notki
lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC


blogger.getRecentPosts - pobiera ostatnio napisane notki

parametry wywołania:
  1. <string> appkey ignorowany
  2. <string> blogid nazwa bloga
  3. <string> username login właściciela/administratora bloga lub autora notek
  4. <string> password hasło użytkownika
  5. <int> numberOfPosts liczba ostatnich notek, którą chcemy pobrać
zwraca listę notek jako <array> listę <struct> tablic z wartościami przypisanymi do kluczy:
<string> "content" - treść
<string> "userid" - login autora
<string> "postid" - identyfikator liczbowy notki
<string> "dateCreated" - data utworzenia notki
lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC


blogger.deletePost - kasuje notkę

parametry wywołania:
  1. <string> appkey ignorowane
  2. <string> postid identyfikator notki
  3. <string> username login właściciela/administratora bloga lub autora notki
  4. <string> password hasło użytkownika
  5. <boolean> publish ignorowane
zwraca <boolean> true lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC


blogger.getUsersBlogs - pobiera adresy blogów użytkownika

parametry wywołania:
  1. <string> appkey ignorowany
  2. <string> username login właściciela/administratora/użytkownika blogów
  3. <string> password hasło użytkownika
zwraca listę adresów jako <array> listę <struct> tablic z wartościami przypisanymi do kluczy:
<string> "blogid" - identyfikator bloga
<string> "url" - adres url bloga, nie zaimplementowane
<string> "blogName" - nazwa bloga
lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC


blogger.getUserInfo - zwraca informacje o użytkowniku, nie zaimplementowana

parametry wywołania:
  1. <string> appkey - ignorowany
  2. <string> username - login każdego użytkownika bloga
  3. <string> password - hasło użytkownika
zwraca <struct> tablicę z wartością przypisaną do klucza:
<string> "userid" - login
lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC



Obsługiwane metody z API MetaWebLog:

metaWeblog.newPost - dodaje nową notkę

parametry wywołania:
  1. <string> blogid nazwa bloga
  2. <string> username login właściciela/administratora/użytkownika bloga (ale nie czytelnika)
  3. <string> password hasło użytkownika
  4. <struct> content treść notki jako tablica z wartościami przypisanymi do kluczy: <boolean> "flNotOnHomePage" - ignorowany
    <string> "title" - tytuł notki (max 255 znaków)
    <string> "description" - treść notki (max 16KB)
    <array> "categories" - lista nazw kategorii, do których ma zostać dodana notka (obecnie obsługiwana tylko 1 kategoria), lub brak wartości - wtedy notka trafia do kategorii domyślnej
    <string> "pubDate" - ignorowany
    <string> "guid" - ignorowany
    <string> "author" - login autora notki, musi mieć co najmniej status użytkownika bloga
  5. <boolean> publish czy wpis ma być opublikowany (true) czy zapisany jako szkic (false)
zwraca <string> identyfikator nowo utworzonej notki
lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC


metaWeblog.editPost - modyfikuje notkę

parametry wywołania:
  1. <string> postid identyfikator notki
  2. <string> username login właściciela/administratora bloga lub autora notki
  3. <string> password hasło użytkownika
  4. <struct> content treść notki jako tablica z wartościami przypisanymi do kluczy: <boolean> "flNotOnHomePage" - ignorowany
    <string> "title" - tytuł notki (max 255 znaków)
    <string> "description" - treść notki (max 16KB)
    <array> "categories" - lista nazw kategorii do których ma zostać dodana notka (obecnie obsługiwana tylko 1 kategoria), lub brak wartości - wtedy notka trafia do kategorii domyślnej
    <string> "pubDate" - ignorowany
    <string> "guid" - ignorowany
    <string> "author" - login autora notki, musi mieć co najmniej status użytkownika bloga.
  5. <boolean> publish czy wpis ma być opublikowany (true) czy zapisany jako szkic (false)
zwraca <boolean> true
lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC


metaWeblog.getPost - pobiera notkę

parametry wywołania:
  1. <string> postid identyfikator notki
  2. <string> username login właściciela/administratora bloga lub autora notki
  3. <string> password hasło użytkownika
zwraca <struct> tablicę z wartościami przypisanymi do kluczy: <string> "title" - tytuł notki
<string> "description" - treść notki
<array> "categories" - wektor nazw kategorii do których ma zostać dodana notka (obecnie obsługiwana tylko 1 kategoria), lub brak wartości
<string> "pubDate" - data publikacji
<string> "guid" - identyfikator notki
<string> "author" - login autora notki
lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC



metaWeblog.getRecentPosts - pobiera ostatnio napisane notki

parametry wywołania:
  1. <string> blogid nazwa bloga
  2. <string> username login właściciela/administratora bloga lub autora notek
  3. <string> password hasło użytkownika
  4. <int> numberOfPosts liczba ostatnich notek, którą chcemy pobrać
zwraca listę notek jako <array> listę tablic <struct> z wartościami przypisanymi do kluczy:
<string> "title" - tytuł notki
<string> "description" - treść notki
<array> "categories" - wektor nazw kategorii do których ma zostać dodana notka (obecnie obsługiwana tylko 1 kategoria), lub brak wartości
<string> "pubDate" - data publikacji
<string> "guid" - identyfikator notki
<string> "author" - login autora notki
lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC


metaWeblog.getCategories - pobiera wszystkie kategorie bloga

parametry wywołania:
  1. <string> blogid nazwa bloga
  2. <string> username login użytkownika bloga
  3. <string> password hasło użytkownika
zwraca listę kategorii jako <array> listę <struct> tablic z wartościami przypisanymi do kluczy:
<string> "htmlUrl" - nazwa kategorii
<string> "description" - tytuł opis kategorii
lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC


metaWeblog.newMediaObject - ładuje do zasobów bloga nowy plik

parametry wywołania:
  1. <string> blogid nazwa bloga
  2. <string> username login użytkownika bloga
  3. <string> password hasło użytkownika
  4. <struct> file plik jako tablica z wartościami przypisanymi do kluczy:
    <string> "name" - nazwa pliku
    <string> "type" - typ MIME (musi być dozwolony do ładowania na blox.pl)
    <base64> "bits" - zawartość pliku formie binarnej
zwraca <struct> tablicę z wartościami przypisanymi do kluczy:
<string> "url" - adres url załadowanego pliku
lub błąd wywołania procedury zgodny ze specyfikacją XML-RPC.

Przykładowy fragent kodu w języku Java, prezentujący sposób użycia metody blogger.getUsersBlogs (wymagany jest pakiet Apache XML-RPC):
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Vector;
import org.apache.xmlrpc.XmlRpcClient;
import org.apache.xmlrpc.XmlRpcException;

...

try
{
  XmlRpcClient client = new XmlRpcClient( "http://www.blox.pl/xmlrpc" );
	
  Vector params = new Vector();
  params.addElement( "" );
  params.addElement( "twoj_login" ); // username
  params.addElement( "XXXXX" );      // haslo

  Vector blogi = (Vector) client.execute( "blogger.getUsersBlogs", params );

  if (blogi != null && !blogi.isEmpty())
  {
    for (Iterator i=blogi.iterator(); i.hasNext(); )
    {
      Hashtable blog = (Hashtable) i.next(); 
      System.out.println(blog.get("blogid")+", "+blog.get("url")+", "+blog.get("blogName"));
    }
  }
} catch (MalformedURLException e) {
  e.printStackTrace();
} catch (XmlRpcException e) {
  e.printStackTrace();
} catch (IOException e) {
  e.printStackTrace();
}


Słowa kluczowe: api, xmlrpc, php, blox

9 listopada 2005 (środa), 19:06:06

Programowanie ...

Programowanie wyrażeń regularnych jest piękne a do tego bardzo mnie ostatnio bawi.

$x = preg_replace_callback ('/NN((j?[^N]+N?)*(j[^N]+N?)+(j?[^N]+N?)*)NN/',
     create_function (
                '$arg',
                '
                $y = $arg [1];
                $y = preg_replace ('/j([^N]+)N?/', "<LI></LI>nN",$y);
                $y = preg_replace ('/([^N/<][^N]*)N?/', "<P></P>n",$y);
                $y = preg_replace ('/</LI>nN/', "</LI>n", $y);
                return "NN<UL>" . $y . "</UL>NN";
                '
       ),
     $x);

Piękne w nim jest to, że jest ono wielką pułapką dla postmodernistycznych informatyków. Tego nie da się wziąć z przykładu i lekko przerobić, nie da się zaadoptować, wzorować na przykładzie. Po prostu to trzeba zrozumieć aby z tego korzystać - żadnego chodzenia na skróty, żadnego podręcznika za 5zł pt. "Jak programować wyrażenia regularne w 5 minut".

A moja metoda jest taka: napisać na karteczce przypasowywany tekst, napisać pod spodem propozycję wyrażenia i z lekka zezując przesuwać palec jednej ręki po tekście a drugiej po wzorcu. Przy pierwszym błędzie poprawić wzorzec zapisując go poniżej. Jeżeli kartka się skończy wziąć następną, a jak skończy się ryza to następną.

I jeszcze obserwacja - zapis przypomina nieco czasy programowania w asemblerze, w czasach gdy nie było jeszcze kompilatorów (meta)asemblera i procedury zapisywało się szesnastkowo. Np w Intelu 8080 i Z-80 CALL to bylo CD a RET C9


Robię sobie odświeżanie pamięci: JMP C3, LD A 21...., NOP 00, LD HL 23...., prefix: hl->iy FD hl->ix DD, HOLD 80, JZ C2, JC CA, słabo, słabo z pamięcią.


Kategorie: informatyka, _blog


Słowa kluczowe: informatyka, PHP, HTML, wyrażenia regularne


Komentarze: (1)

lilienn, November 12, 2005 00:06 Skomentuj komentarz


pozytywne mysli
Skomentuj notkę
12 lutego 2005 (sobota), 13:10:10

Postmodernizm w informatyce

#1. Inspiracja

Uwaga, będzie ostro. Osoby wrażliwe proszone są o wyjście z sali. Uwaga, cytuję, proszę nie regulować odbiorników:

---+!! Przyłacznice ODF w węźle
%URLPARAM{"kod_wezla"}% 
%IF{ %URLPARAM{"kod_wezla"}%AAA eq AAA }%
%STARTINCLUDE% %TABLE{tableborder="0" cellpadding="3" cellspacing="1"} 
nie podano kodu węzła %ELSE% %DATABASE_SQL_REPEAT{description="bazak"
columns="kod_psu" command="SELECT kod_psu FROM psu WHERE kod_wezla =
'%URLPARAM{"kod_wezla"}%'  ORDER BY kod_psu"}% | %kod_psu% | <a
href="BazaPsuKrosowania?kod_psu=%kod_psu%">Krosowania</A> | <A
href="BazaPsuPolaczenia?kod_psu=%kod_psu%">Połączenia</A>
|
%DATABASE_SQL_REPEAT% %STOPINCLUDE% %ENDIF%

#2. Analiza

To co jest zapisane powyżej jest fatalną próbą programowania jednocześnie w 6 językach, przy czym niektóre języki to języki skryptowe.

Tak tak, jeżeli chce się teraz coś zaprogramować w sposób modny (czytaj: trendy), to robi się to właśnie w taki sposób.

Wyliczmy więc od góry co my tu mamy:

  1. Język TWIKI będący makrorozwinięciem HTML-a. Mamy więc ---++ i | ale to !! na początku już nie. Oczywiście liczba spacji i znaki końca wiersza mają tu znaczenie (to tak aby było zabawniej);
  2. wstawki w HTML-u oczywiście przechodzą więc drugim językiem jest HTML ze swoimi <A HREF=...> ... </A> i czasami wstawkami do formatowania.
  3. język makr PlugIn-ów tworzonych dla TWiki typu %IF{ } ... %ENDIF% lub %DATABASE_SQL_REPEAT {}%. Ten na jest tak zabagniony jeżeli chodzi o błędy, że może nie warto go używać. Ale jest 3 jak nic.
  4. W środku np. tego %IF... używa się wyrażeń w PERL-u, bo w PERL-u jest zapisany ten moduł więc po co kombinować - nie się inni uczą języków! Kto więc myśli, że == znaczy co znaczy to się myli.
  5. Skoro dobieramy się do baz, to SQL też się tu pojawia jako język numer pięć.
  6. To jeszcze nie koniec, bo jeżeli między stronami (elementami bazy danych TWiki) chcemy przekazać parametr to pojawia się kolejny język kodujący przekazywanie parametrów w środowisku Webów i URL-i, czyli $param z wszystkimi tymi ? i & po drodze.

#3. Uwagi

  • spacje i nowe linie mają znaczenie;
  • liczba spacji też ma znaczenie, bo zarówno w TWiki coś to znaczy jak i też niektóre moduły zjadają sobie więcej spacji niż powinny i inne przez to mają problemy składniowe.
  • w jakiej kolejności jest to rozmakrowywane chyba nikt nie wie, ale przecież ta wiedza nie jest potrzebna - ważne aby działało.

#4. Pokuta

Dla zasady muszę przyznać, że nie mam prawa się czepiać gdyż sam, osobiście, w końcu 1988 roku popełniłem produkt, który zwał się SVI i w swym pomyśle był językiem programowania obiektowego do bazodanowego Clippera '87. Zamysł piękny ale w wykonaniu był to dokładnie takim samym jak powyższe przykłady język makr, który nawiasem mówiąc nie tworzył języka o czym się przekonali 4 lata później koledzy tworzący kompilator do tego cuda. Tam też spacje miały znaczenie a preprocesorowa instrukcja warunkowa nie usuwała tekstu z pomiędzy klamer &<- ifc ... &<- endifc a (!) zastępowała zawarty tam tekst spacjami - ta drobna różnica miała to swoje ogromne znaczenia.

Tak więc po części sam sobie jestem winien i jako pokutę zadam sobie przeczytanie książki pana Wirth'a pt. "Algorytmy + struktury danych = programy". Kiedyś to były czasy! Aby pisać programy człowiek nie potrzebował komputera!

I jeszcze wspomnienie: ten prefiks &<- w SVI znalazł się na wspomnienie systemu operacyjnego George 3 zaimplementowanego na Odrze-1305. W Georgu też były makra przy przekazywaniu parametrów. Zaczynały się od % o ile dobrze pamiętam.

5. Zdziwienie

A całe to przemyślenie zapisuję w kolejnym makarowym automacie zwanym w34.blog.pl i dziwię się, że ta próbka postmodernistycznego kodu nie zainterferowała z enginem (piękne słowo) bloga i dała się wyświetlić.


Kategorie: informatyka, _blog


Słowa kluczowe: postmodernizm, informatyka, WIKI, PHP, PERL, SQL, HTTP, HTML, TWIKI, Clipper, SVI, programowanie obiektowe


Komentarze: (1)

falista, February 13, 2005 22:29 Skomentuj komentarz


w kwestii poprawności analizy języków programowania się nie wypowiem, bo sie nie znam ... wiem jednak, że kiedy czytam podobne teksty, zwłaszcza przysłane do mnie "via" email, budzi to mój nieskrywany podziw i wesołość, przy czym wesołość okazywana jest przez rechot, zaś podziw przez uniesienie brwi

pozdrawiam
Skomentuj notkę
25 stycznia 2004 (niedziela), 20:49:49

Programować każdy może...

Programować każdy może, to znaczy, że mogę ja też. A więc chcąc sobie zrobić spis treści moich notek zagłębiłem się w XML-a, programowanie w PHP-ie, wyrażenia regularne... Myślę, że każdy, nawet niepraktykujący informatyk powinien raz na 5 lat, tak dla sportu rozwiązać jakiś fajny problem przy pomocy wyrażeń regularnych.

Efekty (okropne) można oglądać tu:

A kod, który to robi jest poniżej. Szkoda tylko, że nie robi tego co chciałem, czyli nie wyciąga mi spisów notek z archiwum. Ale tak to zawsze jest z projektami informatycznymi: założenia są jakieś a wychodzi coś innego, o czym przekonujemy się obserwując jak Softbank robi CEPIK.

Ale ja mam korzyści z tej zabawy: dowiedziałem się czegoś o XML-u, o parsowaniu, przypomniałem sobie PHP-a (od czasów stworzenia FIKI zapomniałem wiele), potrenowałem ereg_replace, liznąłem UTF-8 i Unicode... Trening mózgu zaliczony!

/******************************************************************

To prosty program, ktory pobiera pierwsza strone bloga z blog.pl
 
jako RSS w formacie XML i rozbiera ja na elementy pierwsze
korzystajac ze standardowego parseta dostepnego w PHP4.
 
Programowac kazdy moze !
 
Program w piekna styczniowa 2004 roku noc popelnil W34.

*******************************************************************/
 
 $ItemOn = 0;             // wskaznik, czy analizuje opis bloga czy notke
 $LinkOn = 0; $TitleOn = 0; $DateOn = 0; $DescriptionOn = 0;
 $SpisNotek1 = array();  // tablica, w ktorej skompletuje spis tresci
 $xSpisNotek1 = 0;       // indeks do budowania tablicy notek
 $TytulBloga = "";
 
 // najlepiej zrobic to tak aby nikomu nie wpadlo do 
 // glowy otwieranie /etc/shadow
 $blog = $_SERVER[QUERY_STRING]; 
 $file = "http://" . $blog . ".blog.pl/index.rss";
 wyswietl_tematy_notek ($file);
 
 function wyswietl_tematy_notek ($blog_rss_url) {
     global $SpisNotek1, $TytulBloga;
 
     # na poczatek parsowanie tego XML-a co sie go wczytuje
 
     $xml_parser = xml_parser_create ();
     xml_set_element_handler ($xml_parser, "startElement", "endElement");
     xml_set_character_data_handler ($xml_parser, "characterData");
 
     if (!($fp = fopen ($blog_rss_url, "r")))
         die ("cos ta strona w  XML nie chce sie otworzyc");
 
     while ($data = fread ($fp, 4096)) {
         if (!xml_parse ($xml_parser, $data, feof ($fp))) {
             die(sprintf("XML error: %s at line %d",
             xml_error_string (xml_get_error_code ($xml_parser)),
             xml_get_current_line_number ($xml_parser)));
         }
     }
 
     xml_parser_free ($xml_parser);
     # a teraz wyrzucenie spisu notek w jakims formacie
echo '<b>' . $TytulBloga . '</B></BR>';
foreach ($SpisNotek1 as $notka) {
echo '<P>';
echo '<a href="' . $notka [link] . '" target="nw">';
echo '' . $notka [title] . '</A>';
echo '<small>' . $notka [date] . '</small>';
# echo '' . $notka [description]; // cos to brzydko wyglada
# echo '<HR>'; } } # # funkja wolana przez parser w chwili, gdy znajdzie on emelemt otwierajacy # function startElement($parser, $name, $attrs) { global $LinkOn, $ItemOn, $TitleOn, $DateOn, $DescriptionOn; switch ($name) { case "ITEM" : // notki sa umieszczone w $ItemOn++; break; case "LINK" : $LinkOn++; break; case "TITLE" : $TitleOn++; break; case "DC:DATE" : $DateOn++; break; case "DESCRIPTION" : $DescriptionOn++; break; } } # # funkja wolana przez parser w chwili, gdy znajdzie on zamkniecie # function endElement($parser, $name) { global $LinkOn, $ItemOn, $TitleOn, $DateOn, $DescriptionOn; global $xSpisNotek1; switch ($name) { case "ITEM" : $ItemOn--; $xSpisNotek1++; break; case "LINK" : $LinkOn--; break; case "TITLE" : $TitleOn--; break; case "DC:DATE" : $DateOn--; break; case "DESCRIPTION" : $DescriptionOn--; break; } } # # funkcja wolana przez parser, gdy ma on dane zawarte w elemencie # function characterData ($parser, $data) { global $LinkOn, $ItemOn, $TitleOn, $DateOn, $DescriptionOn; global $SpisNotek1, $xSpisNotek1, $TytulBloga; if ($ItemOn){ if ($LinkOn) $SpisNotek1 [$xSpisNotek1] [link] = $data; if ($TitleOn) $SpisNotek1 [$xSpisNotek1] [title] = utf82iso88592 ($data); if ($DateOn) // na pewno mozna ta date potraktowac lepiej :-) $SpisNotek1 [$xSpisNotek1] [date] = substr ($data, 0, 10); # if ($DescriptionOn) // cos te konwersje tekstu nie dzialaja :-) # $SpisNotek1 [$xSpisNotek1] [description] = utf82iso88592 (html2text ($data)); } else if ($TitleOn) $TytulBloga = utf82iso88592 ($data); } ?>

Kategorie: informatyka, _blog


Słowa kluczowe: PHP, XML, parser, blog, programowanie


Komentarze: (2)

marekm, January 28, 2004 13:37 Skomentuj komentarz


> Programować każdy może, to znaczy, że mogę ja też.

No, teraz przynajmniej wiadomo dlaczego jordan przestal dzialac... ;)

> Myślę, że każdy, nawet niepraktykujący informatyk powinien raz na 5 lat, tak dla sportu rozwiązać jakiś fajny problem przy pomocy wyrażeń regularnych.

Nam na studiach kazali to robic na kartce - teraz zrozumialem dlaczego....

khan-goor, January 26, 2004 15:59 Skomentuj komentarz


0
Skomentuj notkę

Disclaimers :-) bo w stopce coś wyglądającego mądrze można napisać. Wszystkie powyższe notatki są moim © wymysłem i jako takie związane są ze mną. Ale są też materiały obce, które tu przechowuję lub cytuje ze względu na ich dobrą jakość, na inspiracje, bądź ilustracje prezentowanego lub omawianego tematu. Jeżeli coś narusza czyjeś prawa - proszę o sygnał abym mógł czym prędzej naprawić błąd i naruszeń zaniechać.