Korzystając z tej strony zgadzasz się z polityką prywatności i regulaminem.
Akceptuj
WebInside.plWebInside.plWebInside.pl
  • Aktualności
  • Technologie
  • WWW
  • E-marketing
  • AI
  • Poradniki
  • e(Biznes)
Szukaj
  • Kontakt
  • Forum
WebInside.pl © 2023.
Czytasz: Własny język opisu danych
Udostępnij
Zaloguj się
Powiadomienia
Aa
WebInside.plWebInside.pl
Aa
Szukaj
  • Strona główna
  • Aktualności
  • Technologie webowe
  • Publicystyka
  • E-marketing
  • Poradniki
  • AI
  • Technologie
  • Artykuły partnerskie
  • Więcej
    • Kontakt
    • Mapa strony
Masz już konto? Zaloguj się
  • Aktualności
  • Technologie
  • WWW
  • E-marketing
  • AI
  • Poradniki
  • e(Biznes)
WebInside.pl © 2023.
WebInside.pl > Technologie webowe > Własny język opisu danych
Technologie webowe

Własny język opisu danych

WebInside.pl
Ostatnia aktualizacja: 25.07.2003
WebInside.pl
Udostępnij
Udostępnij

W tym tutorialu mam zamiar przybliżyć Wam sposób stworzenia własnego języka opisu danych.

Zawartość
WprowadzeniePodstawowe założeniaWymaganiaPrzykładowe rozwiązaniePrzykład użyciaPrzykład pliku nadającego się do przepuszczenia przez nasz interpreterZakończenie

Wprowadzenie

Z doświadczenia wiem, iż Internet pełen jest zleceniodawców, którzy nie mają zielonego pojęcia o Sieci. Trudno od takich ludzi wymagać znajomości HTML. Cóż więc możemy zrobić my, programiści aplikacji WWW, by wyjść im na przeciw? Rozwiązań jest kilka… ja z racji swojej awersji do JavaScriptu i jemu podobnych języków interpretowanych po stronie klienta, postanowiłem stworzyć coś maksymalnie kompatybilnego ze wszelkimi przeglądarkami. Efekty przedstawiam poniżej. Z góry przepraszam za mój dość lakoniczny styl, ale jestem zdania, iż najprościej nauczyć się czegoś czytając poprawnie napisany kod, a kwiecista otoczka tylko utrudnia naukę.

Podstawowe założenia

Zanim zaczniemy cokolwiek programować potrzebny jest nam przynajmniej zarys tego, co chcemy uzyskać. W przedstawionym przeze mnie przykładzie programista (w tym wypadku my) dąży do maksymalnego ułatwienia użytkownikowi wprowadzania danych – jest to priorytet od którego musimy wyjść, cel, do którego musimy dążyć uparcie, aczkolwiek zważając na metody.

Wymagania

Skrypt nie może korzystać z JavaScript i musi być możliwie jak najbardziej intuicyjny, a przy tym zastosowane rozwiązanie musi być łatwe do zaimplementowania w istniejących aplikacjach.

Przykładowe rozwiązanie

Oto przykładowa klasa nosząca nazwę parser.class.php:

<?php // Copyleft Grzegorz Pacan <[email protected]> // v. 0.2, 18 czerwca 2004, 23:37 class Parser { var $sLangEmptyInput = „Parser nie otrzymał danych wejściowych.”; function __construct() { error_reporting(0); return 1; } function error ($sMessage) { echo „<p><b style=”color:red”>BŁĄD:</b> ” . $sMessage . „</p>”; } function parse ($sInput) { if($sInput == „”) { $this->error($this->sLangEmptyInput); } else ” { $sInput = preg_replace(„![kod]rn(.*?)rn[/kod]!es”, 'sprintf(„[kod]%s[/kod]”, htmlspecialchars(„1”))’, $sInput); preg_match(’/.*[kod](.*?)[/kod].*/s’, $sInput, $aOutput); $aFrom = array(„š”, „?”, „?”, „Ľ”, „?”, „?”, $aOutput[’1′], „[kod]”, „[/kod]”, „alternatywa=””, „opis=””, „[pogrubienie]”, „[/pogrubienie]”, „[kursywa]”, „[/kursywa]”, „[/naglowek]rnrn”, „rnrn”, „[naglowek]”, „[obrazek po lewej=””, „[obrazek po prawej=””, „” /]”, „[/odnosnik]”, „[odnosnik=””, „<p><pre>”, „</pre></p>”, „<h2>”, „rn”, „[br /]”, „<p></p>”); $aIn = array („ą”, „ś”, „ź”, „Ą”, „Ś”, „Ź”, str_replace(„rn”, „[br /]”, $aOutput[’1′]), „<pre>”, „</pre>”, „alt=””, „title=””, „<b>”, „</b>”, „<i>”, „</i>”, „</h2><p>”, „</p><p>”, „<h2>”, „<img style=”float:left;” src=””, „<img style=”float:right;” src=””, „”>”, „</a>”, „<a href=””, „<pre>”, „</pre>”, „</p><h2>”, „”, „rn”, „”); $sOutput = str_replace($aFrom, $aIn, strip_tags($sInput)); if(substr($sOutput, 0, 8) == „</p><h2>”) { return substr($sOutput, 4, strlen($sOutput)); } else { return „<p>” . $sOutput; } } } } ?>

Przykład użycia

<?php require_once(„include/libs/adodb/adodb.inc.php”); require_once(„include/connect.php”); require_once(„include/mainfile.php”); require_once(„include/classes/parser.class.php”); $rs = $db->Execute(„select body from texts where id='” . $_GET[’id’] . „'”); if(empty($rs->fields)) { error(„Artykuł o żądanym numerze nie istnieje.”); } else if($rs->fields[’0′] == „”) { error(„Artykuł nie zawiera treści.”); } else { $test = new Parser; echo $test->parse($rs->fields[’0′]); } $db->Close(); ?>

Opis Nasz interpreter w chwili obecnej potrafi: · tworzyć nagłówki, · automatycznie rozpoznawać akapity, · wklejać obrazki przylegające do lewej lub prawej krawędzi tekstu, · w dość prosty sposób wstawiać odnośniki, · pogrubiać i pochylać tekst, · wklejać kod (opcja w wersji podstawowej, ale jeśli komuś się nudzi, może rozwinąć), · usuwać puste akapity, · w razie potrzeby konwertować tekst z kodowania windows-1250 do iso-8859-2, · usuwać niepotrzebne linie (a co za tym idzie, zmniejszać objętość strony wysyłanej do klienta).

Przykład pliku nadającego się do przepuszczenia przez nasz interpreter

[naglowek]To testowy plik![/naglowek] [obrazek po lewej=”test.png” alternatywa=”Testowy obrazek.” opis=”Testowy obrazek.” /][pogrubienie]Czy[/pogrubienie] [kursywa]wszystko[/kursywa] zostało zinterpretowane tak, jak się spodziewał(a/e)ś? [kod] <?php if($_POST[’answer’]) { echo „Cieszę się.”; } else { echo „No cóż, popróbuj sam(a). Ewentualnie możesz do mnie napisać na adres [odnośnik=mailto:[email protected] opis=”Napisz do Grzegorza Pacana”][email protected][/odnosnik].”; } ?> [/kod]

Zakończenie

Mam nadzieję, że przedstawiony powyżej skrypt przyda się przynajmniej kilku osobom. Można go wykorzystywać zgodnie z licencją GNU GPL, która musi być dołączona do skryptu, by był on używany legalnie. Spragnionym eksperymentów polecam dodanie np. pola typu <select> pod <textarea> z nazwami i krótkimi opisami plików graficznych, które można wkleić do treści tekstu. Należy bowiem zwrócić uwagę na to, iż w prosty sposób można ograniczyć użytkownikom wczytywanie obrazków do interpretowania tylko danych formatów czy też wklejania tylko tych ze wskazanego folderu. Na rozwinięcie czeka również znacznik [kod]. Przydałoby mu się np. numerowanie linii.

Mam nadzieję, iż Czytelnicy WebInside potraktują wyżej wspomniane „niedociągnięcia” jako pracę domową.

Może Cię zainteresować

Sprawdź, jak zostać testerem oprogramowania lub Java developerem! Poznaj kursy online!

Architektura globalnego e-commerce: Jak zbudować sklep gotowy na podbój świata?

Java obchodzi 30. urodziny – język programowania który zmienił świat technologii

Jak zacząć projektować aplikację, nie mając gotowego pomysłu?

Serwer dla małej firmy – czym kierować się przy jego wyborze?

WebInside.pl 2003-07-25 2003-07-25
Udostępnij ten artykuł
Facebook Twitter Kopiuj link Wydrukuj
Udostępnij
Poprzedni artykuł Statystyki z ShoutCAST w PHP
Następny artykuł Ochrona antyfloodowa
Zostaw komentarz lub opinię

Dodaj komentarz Anuluj pisanie odpowiedzi

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Najnowsze artykuły

Procesor AMD Ryzen 7
Najlepsze procesory z pamięcią 3D V-Cache: Wydajność dla graczy i profesjonalistów
Technologie
Jak przygotować sklep internetowy na automatyzację obsługi klienta?
Artykuły partnerskie
the nvidia logo is displayed on a table
Nvidia przyłapana? Gigant AI chciał kupić miliony pirackich książek
AI Aktualności
Najczęstsze błędy w SMS marketingu: jak nie przepalić budżetu?
E-marketing
4 najczęstsze cyberzagrożenia w przemyśle
Technologie
Jak uratować zaschnięty tusz do drukarki? Skuteczne domowe sposoby i porady
Poradniki
Model 3D jako wspólne źródło danych dla projektu, produkcji i montażu
Artykuły partnerskie
Dlaczego wideo z telefonu sprzedaje na TikToku lepiej niż profesjonalne spoty?
Artykuły partnerskie
Dwa ekrany zawsze pod ręką – zalety korzystania z monitora przenośnego na co dzień
Technologie
Rola nowoczesnych technologii w procesie rehabilitacji
Artykuły partnerskie
banner
Chcesz umieścić swoją reklamę w portalu WebInside.pl?
Skontaktuj się z nami, a zaproponujemy interesujące formy reklamy.
Skontaktuj się

Inne polecane artykuły

Technologie webowe

Sprawdź, jak zostać testerem oprogramowania lub Java developerem! Poznaj kursy online!

5 min czytania
Technologie webowe

Architektura globalnego e-commerce: Jak zbudować sklep gotowy na podbój świata?

7 min czytania
MacBook Pro showing programming language
Technologie webowe

Java obchodzi 30. urodziny – język programowania który zmienił świat technologii

9 min czytania
AktualnościTechnologie webowe

Jak zacząć projektować aplikację, nie mając gotowego pomysłu?

9 min czytania
woman in black top using Surface laptop
Technologie webowe

Serwer dla małej firmy – czym kierować się przy jego wyborze?

5 min czytania
Technologie webowe

Jaki hosting wybrać pod Laravel? Kompleksowy przewodnik dla twórców aplikacji webowych

6 min czytania
programming language
Technologie webowe

Kaskadowość w CSS – wszystko, co musisz wiedzieć

7 min czytania
two women talking while looking at laptop computer
Technologie webowe

Darmowe kreatory stron WWW – stwórz swoją stronę w godzinę

14 min czytania
//

WebInside.pl – portal technologiczny. Aktualności ze świata technologii, webmastering, marketing internetowy, AI, poradniki.

 

Partnerzy

Wszystkie kategorie

  • AI
  • Aktualności
  • Artykuły partnerskie
  • E-marketing
  • e(Biznes)
  • Poradniki
  • Publicystyka
  • Technologie
  • Technologie webowe

Ostatnio dodane

  • Najlepsze procesory z pamięcią 3D V-Cache: Wydajność dla graczy i profesjonalistów
  • Jak przygotować sklep internetowy na automatyzację obsługi klienta?
  • Nvidia przyłapana? Gigant AI chciał kupić miliony pirackich książek
  • Najczęstsze błędy w SMS marketingu: jak nie przepalić budżetu?

Kontakt

Chcesz się z nami skontaktować? Jesteś zainteresowany reklamą lub artykułem sponsorowanym?

Skorzystaj z formularza kontaktowego lub napisz do nas na kontakt@webinside.pl

WebInside.plWebInside.pl
WebInside.pl © 2023 | Mapa strony | Forum | Polityka prywatności
Witaj ponownie!

Zaloguj się do swojego konta

Zapomniałeś hasła?