Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 375 Pomógł: 20 Dołączył: 28.07.2006 Ostrzeżenie: (0%)
|
Jest sporo problemów z analizą XHTML w PHP przez funkcje XML. Kilka już rozwiązałem, stosując różne tricki i obejścia. Jednak jest kolejny - jak pobrać wartość atrybutu z przestrzenią nazw? Wprawdzie można zrezygnować z namespace, lecz lepiej zaznaczyć w kodzie XHTML, że znacznik lub atrybut należy do dziedziny F3.
Niestety, nie działa. Nawet $f3->item['var']. A może zastosowanie funkcji preg_* i str_* lepiej nadaje się do analizy kodu XHTML? Właściwie operacje na XML-u wykonuję tylko po to, aby odczytać wartości paru atrybutów, np. f3:var, z tym że: - jeśli znajdzie się w <form>, trzeba przejechać wszystkie pola: checkbox, radio i select i odczytać ich nazwy - gdy znajdzie się w tych polach - dotyczy tylko tych pól Trzeba potem jeszcze wstawić instrukcję warunkową. Za pomocą SimpleXML tylko pobieram kod pola do zamiany przez str_replace(), bo w XML-u tego raczej nie zrobię. Przykładowy wynik: Kod <input type="checkbox" id="something" <?php if($config['item']) echo 'checked="checked" ';?>/> LUB: <?php if($config['item']) echo '<input type="checkbox" id="something" checked="checked" />'; else echo '<input type="checkbox" id="something" />'; ?> Właściwie zaletą parsera XML jest to, że wyrzuci błąd, gdy jakiś znacznik jest niezamknięty, lecz uruchamiam go dopiero wtedy, gdy znajduje się w szablonie choć 1 znacznik <form>. Może nie ma to nawet sensu? Ten post edytował WebCM 25.04.2008, 16:44:16 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Przyjaciele php.pl Postów: 384 Pomógł: 6 Dołączył: 11.09.2004 Skąd: Grodzisk Mazowiecki Ostrzeżenie: (0%)
|
Jest sporo problemów z analizą XHTML w PHP przez funkcje XML. Kilka już rozwiązałem, stosując różne tricki i obejścia. Jednak jest kolejny - jak pobrać wartość atrybutu z przestrzenią nazw? Wprawdzie można zrezygnować z namespace, lecz lepiej zaznaczyć w kodzie XHTML, że znacznik lub atrybut należy do dziedziny F3. Śliska sprawa z tym parsowaniem. Otóż tak jak napisałeś. Są 2 drogi - pierwsza potraktować że dokument (X)HTML jest dokumentem xml, albo przeparsować dokument wyrażeniami regularnymi. Pierwsze rozwiązanie jest lepsze ale bardzo kłopotliwe. Otóż wystarczy że ktoś nieopatrznie da <br> zamiast <br /> i już sypie nam że dokument ma nie zamknięty tag. Jeżeli chodzi o drugie rozwiązanie to nie ma problemu z nie zamkniętymi tagami typu <br> jednak jest trochę zabawy z samym parsowaniem (której ja osobiście nie lubię. Podsumowując, XML jest lepszym i wygodniejszym rozwiązaniem. Możesz sobie ładnie użyć DOM'a, SimpleXML'a czy czego tam sobie zapragniesz. Jednak, decydując się na to rozwiązanie musisz mieć pewność że twój dokument będzie można potraktować jako XML. Głównym zagrożeniem są dane "od ludzi". Dane które pan Jan Kowalski wrzuca używając jakiegoś tam panelu administracyjnego. Pan Jan HTML może i zna. Ale wirtuozem to on nie jest i nie liczył bym że będzie wrzucał poprawny XHTML w treść np.: newsów. Z tym można poradzić sobie używając rozszerzenia Tidy, które za nas "posprząta" kod. Nie wiem do końca co chcesz zrobić. Jednak skojarzyło mi się to z pewnym rozwiązaniem które jest w Agavi. Mianowicie FormPopulationFilter. Jego zadania to wypełniać inputy itp. jeżeli ich wartość "siedzi w POST" oraz jeżeli wystąpił błąd validatora Agavi dodawać do elementów formularza class="error" |
|
|
|
Post
#3
|
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%)
|
1. google 2. http://www.sitepoint.com/blogs/2005/10/20/...and-namespaces/ 3. manual (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ?> |
|
|
|
![]() ![]() |
|
Aktualny czas: 23.12.2025 - 05:53 |