jolam
13.08.2009, 17:22:41
Potrzebuje zamieniać pojedyńcze znaki <,>, & i inne, ale jednocześnie chciałabym, żeby znaczniki HTML pozostawały niezmienione. Czyli <p> pozostaje <p> ale < jest zamieniane na odpowiednią encje.
Jest taka funkcja? Bardzo jej potrzebuję..
pozdrawiam Jola
kamil4u
13.08.2009, 17:26:27
Nie ma(prawdopodobnie) - ale możesz sobie napisać ją samemu(wbrew pozorom nie jest to wcale takie trudne)
dr_bonzo
13.08.2009, 17:51:17
@fifi: ale to nie zadziala, bo to usuwa tagi, a > w " 123 > 10" nie jest tagiem.
@jolam
Domyslam sie zapisujesz tresc strony w bazie/pliku wraz z tagami html,a chcesz zeby pozostale &, <, > byly zamieniane na encje.
No raczej nie prosto to zrobic, bo jak jest tag zdefiniowany? <cos ...............> lub </cos>, a jak stwierdzisz ze tagiem nie jest "count<liczba ....... 21>10"
albo jak bedziesz chciala napisac artykul o tagach html? Nie bedziesz mogla zapisac "Tabelke zaczynamy od <table>".
Moze zainteresuj sie skladnia bbcode/wiki/itp jak np. Textile - mozesz zachowac podstawowe formatowanie htmlowe, i nadal zapisywac < > (z tego co widze to radzi sobie z luznymi < i > i akceptuje takze html <hr /> zamieni na linie.
Uzycie skladni:
http://hobix.com/textile/Klasa w php:
http://textile.thresholdstate.com/Albo zapisuj sobie & i < > od razu, recznie jako encje.
jolam
13.08.2009, 18:38:11
dr_bonzo ja w bazie danych nie trzymam całych stron. Może to błąd? Ale do pliku index.php podpinam funkcją include nagłówek, stopkę i inne stałe elementy szablonu. A jedynie to co się zmienia, czyli np treść artykułów pobieram z bazy. I właśnie problem w tym, że zwykle nie mam w tekstach żadnych znaków dziwnych

i dlatego nie musiałam zamieniać ich na encję ale ostatnio kilka takich wstawiłam w treść i już Validator informuje o błędzie. Dlatego spróbowałam użyć funkcji htmlspecialchars no i mi się wszystkie znaczniki paragrafów posypały

Teraz dopiero dostrzegłam jakim problemem są znaczniki HTML w treści strony, dawniej widziałem tylko trudność w ich wstawianiu. A teraz już widzę, że jak nie da się ich odróżnić od tekst/treści to jest problem z funkcjami właśnie na treść działającymi. Powiedz czy jest jakieś inne rozwiązanie niż te inne znaczniki?
pozdrawiam serdecznie Jola
postscriptum
czy mógłby mi ktoś wskazać jakieś porównanie tych różnych systemów znaczników? albo króciuteńko napisać?
dr_bonzo
13.08.2009, 19:02:29
Cytat
Powiedz czy jest jakieś inne rozwiązanie niż te inne znaczniki?
Juz mowilem, skoro znasz html, jako edytor stron, to wpisuj tam prawidlowy hmtl, czyli to co ma wygladac jak <, > , & wpisuj jako encje.
Albo nie uzywaj tagow hmtl -> textile itp.
jmail
13.08.2009, 20:04:48
skoro cała treść ma być w bazie to po co chcesz to zamieniać? użyj dobrego edytora webowego na przykład fckeditor
gcdreak
13.08.2009, 21:55:45
Poprostu możesz użyć
str_replace:
Kolejne znaki zamienisz dodając kolejne poziomy.
jolam
14.08.2009, 09:06:05
dr_bonzo ja znam HTML ale encje nie są takie przyjazne jak ich normalne odpowiedniki, dlatego nie chce ich wpisywać. Poczytałam o tym bbcode i już się zdecydowałam prawie na jego zastosowywanie. Tak będzie najłatwiej dla mnie. Jedynie nie moge znaleźc funkcji PHP która zamieniałaby tekst ze znacznikami bbcode na znaczniki HTML. Mógłbys mi powiedzieć jak w takim razie mogę przekonweertowac tekst ze znacznikami bbcode na tekst ze znacznikami HTML?
pozdrawiam serdecznie Jola
Fifi209
14.08.2009, 11:42:32
gcdreak
14.08.2009, 16:32:13
@fifi209Preg_replace jest wolniejsze id str_replace.
Zastosuj str_replace do zamiany znaczników albo tą
klase.
krzysiej
14.08.2009, 16:45:21
ja używam nbbc, bardzo łatwo się go implementuje w kod, nie gryzie się z niczym i ma bardzo dobrą dokumentację
http://nbbc.sourceforge.net/dokumentacja
http://nbbc.sourceforge.net/doca przykładowy kod wygląda tak (bez tych spacji w tagach bbcode):
<?php
require_once("nbbc.php");
$bbcode = new BBCode;
print $bbcode->Parse("[ i ]Hello, World![ / i ] This is the magic of [ b ]BBCode[ / b ]!"); ?>
to powyżej wyświetli:
Hello, World! This is the magic of
BBCode!
czyli faktycznie:
<i>Hello, World!
</i> This is the magic of
<b>BBCode
</b>!
dadexix
14.08.2009, 19:00:26
A mozesz powiedziec po co Ci to jest potrzebne? moze nie jest problemem to CO uzywasz ale GDZIE i KIEDY...
jolam
14.08.2009, 19:07:14
Ja wiem jak napisać taką funkcję gotową ale aż nie mogę uwierzyć, że w PHP jej nie ma? No bardzo się zdziwiłam. Taka popularna sprawa i albo sama musze napisać albo ściągać jakieś dodatki, które może nie na każdym serwerze będą działać.
pozdrawiam Jola
Fifi209
14.08.2009, 19:11:38
Cytat(jolam @ 14.08.2009, 19:07:14 )

Ja wiem jak napisać taką funkcję gotową ale aż nie mogę uwierzyć, że w PHP jej nie ma? No bardzo się zdziwiłam. Taka popularna sprawa i albo sama musze napisać albo ściągać jakieś dodatki, które może nie na każdym serwerze będą działać.
pozdrawiam Jola
To napisz sama? Kwestia kilku linijek dosłownie. No właściwie to i w jednej się zmieści.
dadexix
14.08.2009, 19:15:36
Stworz tablice ze wszystkimi tagami html to bedzie fajnie:D
Fifi209
14.08.2009, 19:16:19
Cytat(dadexix @ 14.08.2009, 19:15:36 )

Stworz tablice ze wszystkimi tagami html to bedzie fajnie:D
Przecież wystarczy zamienić:
< > &
dadexix
14.08.2009, 19:31:09
Cytat
Potrzebuje zamieniać pojedyńcze znaki <,>, & i inne, ale jednocześnie chciałabym, żeby znaczniki HTML pozostawały niezmienione. Czyli <p> pozostaje <p> ale < jest zamieniane na odpowiednią encje.
tresc:
Kod
<div style="xx"><b>zamien to w </b> ten oto> > > sposob:D</b></div>
Edit: za pozno wyczailem ze Tobie chodzilo o pisanie funkcji do zamiany na bb codes... ale co ma do tego <,>,& to ja nie wiem:D
jolam
15.08.2009, 12:46:07
teraz to już raczej chodzi mi o funkcje zamieniającą html na bbcode i odwrotnie, na razie napisałam własną, ale może są gotowe i są lepsze, szybsze sama już nie wiem
A czy w bbcode są odpowiendiki tabel z html? bo by mi się przydaly takie tabele w bbcode
pozdrawiam Jola
Fifi209
15.08.2009, 12:51:29
Cytat(jolam @ 15.08.2009, 12:46:07 )

A czy w bbcode są odpowiendiki tabel z html? bo by mi się przydaly takie tabele w bbcode
pozdrawiam Jola
Szczerze to wątpię, ale są biblioteki gdzie możesz dodać swoje znaczniki etc.
jolam
15.08.2009, 15:33:07
fifi209 mógłbyś coś więcej napisać o tym? Jedyne co mi przyszło do głowy to zastąpienie <,> w znacnzikach tabel html na [,]. Dobrze to wymyśliłam?
Bardzo chciałam prosić o jeszcze jedną rzecz. Męczyłam si,ę z tym już bardzo długo, ale nie wiem jak to zrobić, a nie mogę znaleźć żadnego przykładu w internecie. Jak przy pomocy PDO utworzyć bazę SQLite a w niej tabelę z kolumnami. I jak wysyłać zapytania do tej bazy? Bardzo proszę o jakiś przykład, nie potrafię sama tego zrobić
dr_bonzo
15.08.2009, 16:55:39
Cytat(jolam @ 15.08.2009, 16:33:07 )

Bardzo chciałam prosić o jeszcze jedną rzecz. Męczyłam si,ę z tym już bardzo długo, ale nie wiem jak to zrobić, a nie mogę znaleźć żadnego przykładu w internecie. Jak przy pomocy PDO utworzyć bazę SQLite a w niej tabelę z kolumnami. I jak wysyłać zapytania do tej bazy? Bardzo proszę o jakiś przykład, nie potrafię sama tego zrobić

http://php.chinaunix.net/manual/en/ref.pdo....connection.php - tu masz jak definiuje sie polaczenie z PDO
PDO uzywasie TAK SAMO jak dla mysql/postgresql
a skladnie SQLite masz ... o dziwo na stronie sqlite.org (http://www.sqlite.org/lang.html )
krzysiej
15.08.2009, 20:49:11
Cytat(jolam @ 15.08.2009, 16:33:07 )

Jak przy pomocy PDO utworzyć bazę SQLite a w niej tabelę z kolumnami. I jak wysyłać zapytania do tej bazy? Bardzo proszę o jakiś przykład, nie potrafię sama tego zrobić

<?php
$dsn = 'sqlite:abcd.db';
try {
$pdo = new PDO($dsn);
$pdo->exec("CREATE TABLE users (id int, name VARCHAR)");
$pdo->exec("DELETE FROM users");
$pdo->exec("INSERT INTO users (name) VALUES('afif')");
$pdo->exec("INSERT INTO users (name) VALUES('tipu')");
$pdo->exec("INSERT INTO users (name) VALUES('robin')");
}
catch (PDOException $e)
{
echo 'Próba nawiązania połączenia zakończyła się niepowodzeniem: ' . $e->getMessage();
}
$result = $pdo->query("select * from users");
foreach ($result as $row)
?>
jesli zastapisz
$dsn = 'sqlite:abcd.db';
na
$dsn = 'sqlite::memory:';
baza zostanie utworzona w pamieci operacujnej
a przykład żywcem z książki
http://helion.pl/ksiazki/probph.htm
jolam
16.08.2009, 09:59:12
krzysiej bardzo Ci dziękuję teraz już widzę jak to ma być. Bardzo mi pomogłeś.
Nie rozumiem tylko tego try{} i catch (PDOException $e){}, co to takiego?
Bo to
$result = $pdo->query("select * from users");
foreach ($result as $row)
echo $row['name'];
to mogłabym zastąpić pętlą while tak jak w sqlite2? Dobrze myślę?
pozdrawiam Jola
viking
16.08.2009, 10:55:04
jolam
16.08.2009, 15:54:39
nic z tego nie zrozumiałam

może znasz jakiś kurs w sieci gdzie byłoby coś o tym napisane?
dr_bonzo
16.08.2009, 16:13:47
@jolam: troche samodzielnosci, google i szukasz "exceptions php tutorial", nie bedziemy ci tu tlumaczyc wszystkiego czego nie wiesz i nie chce ci sie tego w necie znalezc.
jolam
16.08.2009, 21:22:53
wiem tyle, że to jakieś wyjątki związane z błędami ale co to ma do baz danych? czy sqlite da się jakoś ustawić kodowanie na utf-8? Jak mogłabym to zrobić?
Jola
Czy jest jakiś odpowiednik dla sqlite_fetch_single w pdo?
np kiedy pobieram ilosc rekordow albo parentid jakiegos obiektu i wiem ze wynik bedzie nie tablica lecz pojedynczy albo string albo integer to jak to zrobic w pdo?
mam również problem z obsługą błędów. W sqlite2 dostawałam dość szczegółowe komunikaty. Np syntaxerror blisko słowa IN. A tutaj jest gorzej z tym pdo, np jak zgubiłam przecinek miedzy deklarowaniem kolumn to później inserty przechodziły bez blednie ale nie dawały żadnego efektu. Co zrobić?
nie wiem również jak ustawić odpowiednik parametru SQLITE_ASSOC?
bardzo proszę o pomoc
Jola
dr_bonzo
16.08.2009, 21:33:16
http://php.net.pl/manual/en/book.pdo.phpZapoznaj sie z lista metod, poczytaj co robia i wszystko bedziesz wiedziec.
A co do wyswietlania bledow,
http://php.net.pl/manual/en/pdo.setattribute.php +
PDO::ATTR_ERRMODE ustaw na wartosc PDO::ERRMODE_EXCEPTION
kajzur
16.08.2009, 21:35:34
Wyjątek występuję wtedy np kiedy masz błąd z połączeniem, a PDO właśnie takie wyjatki posiada i fajnie jest je przechwycić, poprzez blok try/catch. Co do błędów składni to może errorInfo() ?
jolam
16.08.2009, 22:00:43
No właśnie szukałam zawzięcie odpowiendika sqlite_fetch_single i nie znalazłam, podpowiesz mi jak on się nazywa?
szukałam też gdzie można ustawić SQLITE_ASSOC i również bezskutecznie. W ogóle PDO jest znacnziej gorzej udokumentowane i jest mniej przykładów niż dla sqlite2

prosze odpowiedz mi chociaż na te dwa pytania.
pozdrawiam Jola
dr_bonzo
16.08.2009, 22:47:10
jolam
16.08.2009, 22:56:32
zapoznałam się z manualem,
ale nadal nie moge znalexć funkcji odpowiadającej sqlite_fetch_single
jest przykład:
$pics = $db->query('SELECT COUNT(id) FROM pics');
$this->totalpics = $pics->fetchColumn();
ale to jakieś pokręcone jest, czy nie można jakoś prościej? W tym przykładzie jest jakies $this ->, które nier wime co znaczy, w ogóle to jakieś szaleństwo, w sqlite2 było dużo prościej, czy w pdo i sqlite3 nie da się tak? Po prostu żeby wynik otrzymać jako pojedyńczą zmienna?
pozdrawiam Jola
dr_bonzo
16.08.2009, 23:09:55
Cytat
ale to jakieś pokręcone jest, czy nie można jakoś prościej? W tym przykładzie jest jakies $this ->, które nier wime co znaczy, w ogóle to jakieś szaleństwo, w sqlite2 było dużo prościej, czy w pdo i sqlite3 nie da się tak? Po prostu żeby wynik otrzymać jako pojedyńczą zmienna?
To uzywaj sqlite2. Nie ucz sie nowych rzeczy. I sie nie rozwijaj. Ja cie zmuszac nie bede.
jolam
16.08.2009, 23:18:46
dr_bonzo to nie tak, że nie chce się uczyć nowych rzeczy. Wprost przeciwnie bardzo chciałabym! Ale jak widzę, że aby otrzymać ten sam efekt trzeba się napisać dużo więcej niż wcześniej, to ja się zastanawiam jaki to ma sens? Na swojej stronie dość często korzystam z sqlite_fetch_single. Chciałam przejść na PDO bo ponoć jest lepsze i później łatwiej byłoby mi przejść na postgresql i w ogóle jego uniwersalność, jedno dla wszystkich baz bardzo mi się spodobało. Programowania obiektowego dopiero się uczę, więc wiele z PDO mam trudności, często nie do końca rozumiem co się dzieje w kodzie, np tym który ostatnio wkleiłam z manuala. Ale mimo to zaczęłam zamieniać sqlite2 na PDO (przekonwertowałam bazę i teraz zamieniam zapytania). I okazuje się, że PDO nie ma wielu fajnych rzeczy np sqlite_fetch_single. I już sama nie wiem co mam zrobić. Może przejść na sqlite3 zamiast PDO? Jak byś mi poradził?
pozdrawiam Jola
ucho
16.08.2009, 23:29:27
Ja podziwiam wytrzymałość forumowiczów, Gdzie indziej już 10 wątków temu skończyło by się na "Kup jakąs ksiązkę do PHP, skoro nie potrafisz samodzielnie szukać informacji a nie nam bez przerwy d..uwagę zawracasz"
jolam
17.08.2009, 08:18:45
ucho myślisz, że mi jest przyjemnie kiedy tak co chwile pytam? Dla mnie to jest bardzo krępujące i deprymujące, że nie potrafiłam sobie sama poradzić. Przykro mi, że tylu z Was programistów mogących mi pomóc pisze jaka to ja zła jestem, że zawracam głowę. Jeśli nie chcecie mi pomóc to nie pomagajcie, ale nie musicie być złośliwi.
pozdrawiam Jola
postscriptum
nadal nie wiem co mam robić z tymi interfejsami, który wybrać, który będzie lepszy
viking
17.08.2009, 08:22:46
Na początek musisz przeczytać kurs obiektowego php. Jest tego w sieci sporo. Mówiłaś że "Programowania obiektowego dopiero się uczę" z czego może wynikać że rzeczywiście jakieś kroki podejmujesz a zadajesz pytanie o co chodzi z $this. No i jak tu pomóc? Akurat dokumentacja PDO jest napisana przejrzyście, ze sporą liczbą przykładów i jeśli tego nie rozumiesz to dlatego że brakuje Ci podstaw. Moja sugestia jest taka żebyś na razie nie korzystała z PDO, wróć do tego dopiero jak podniesiesz umiejętności.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.