![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 1 Dołączył: 25.11.2008 Skąd: Polska Ostrzeżenie: (10%) ![]() ![]() |
Witam. Zrobiłem funkcję, która poprawia znaczniki <img> w kodzie strony, mianowicie dodaje do nich atrybut alt (Takie są standardy W3C). Problem w tym, że do tych które mają już alt też dodaje... nie wiem jak zrobić, aby znaczniki z alt były pomijane... tzn. wiem, trzeba użyć negacji, ale z negacją zawsze miałem problemy... Pomoże mi ktoś?
Kod funkcji:
Pozdrawiam, ladovnik Ten post edytował ladovnik 2.02.2009, 20:08:07 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 332 Pomógł: 6 Dołączył: 13.01.2005 Ostrzeżenie: (0%) ![]() ![]() |
Ja bym wywalal wszystkie alty pregiem i wrzucal na nowo, bo regexa do tego nie wiem czy ulozysz (nie wiem czy przy negacji wtecznej możesz stosować nieokreślone zbiory).
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Możesz wskazać mi w dokumentacji W3C fragment, który by informował o tym, że należy zrobić coś takiego jak Ty? To co robisz nie ma najmniejszego związku z W3C.
Co do problemu samego w sobie: preg_replace_callback" title="Zobacz w manualu PHP" target="_manual i przed zmianą sprawdzasz czy aby przypadkiem nie ma już alta. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 332 Pomógł: 6 Dołączył: 13.01.2005 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) ![]() ![]() |
Kod $dane='<img src="style_emoticons/%3C#EMO_DIR#%3E/smile.gif" style="vertical-align: middle;" alt="smile.gif" border="0"/><img src="style_emoticons/%3C#EMO_DIR#%3E/smile.gif" style="vertical-align: middle;" border="0" />'; $dane=preg_replace(array('/ alt\=".*?"/si','/<img([^>]*?) ?\/?>/si'),array('','<img alt="Image"\1 />'),$dane); echo $dane; daje: Kod <img alt="Image" src="style_emoticons/%3C#EMO_DIR#%3E/smile.gif" style="vertical-align: middle;" border="0" /><img alt="Image" src="style_emoticons/%3C#EMO_DIR#%3E/smile.gif" style="vertical-align: middle;" border="0" />
-------------------- Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 101 Pomógł: 5 Dołączył: 15.10.2008 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
w html'u nie jest błędem użycie img bez alt'a ! Do najnowszej części html'a czyli teraz chyba 4.01 bynajmniej wiem ze nie jest
![]() HTML - nie musisz mieć alt'a xHTML - musisz mieć alt'a A co do podmiany to mozesz sprobowac cos z if'em typu Kod if(nie ma alt'a){ wstaw go; } else{ nic nie rób } Ale to tylko taka mała propozycja toku mojego toku myślenia. Sam dopiero zaczynam z php wiec jeszcze Ci tego nie napisze w gotowym skrypcie ale mam nadzieje ze to pomoze ![]() -------------------- http://streetonline.pl/?gback=1 - Kliknij i daj się podwieźć
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 896 Pomógł: 76 Dołączył: 15.11.2003 Skąd: Sosnowiec/Kraków Ostrzeżenie: (0%) ![]() ![]() |
Upraszczając nieco:
Aby obsłużyć także przypadek pustego tagu alt (alt="") można zrobić tak:
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 1 Dołączył: 25.11.2008 Skąd: Polska Ostrzeżenie: (10%) ![]() ![]() |
Ohoho, ile postów
![]() Wave - Jeśli chodzi o Twój pierwszy sposób z wywaleniem wszystkich altów i dodaniem ich na nowo też tak myślałem, ale jeżeli wcześniej były nadane konkretne alty np. alt="Kliknij aby coś tam" to raczej nie wskazane jest je usuwać. Crozin - Wave już ci odpisał. Ja używam xHTML 4.01 ![]() Foxx przeanalizuję Twój przykład i niedługo Wam odpiszę, czy jest to rozwiązanie problemu (obecnie niestety muszę wyłączyć komputer...). EDYCJA: Niestety, Twoje rozwiązanie Foxx było by dobre, ale tylko dla jednego tagu IMG, ponieważ jeśli zmienna $str będzie zawierać:
Wtedy jeśli gdziekolwiek znajdzie się słowo alt nawet nie w tagu img to on nie zamieni nic, w całym źródle. Aby Twoje rozwiązanie było dobre dla takiej zmiennej należało by ją podzielić w tablicy tak, aby każdy tag img był w osobnym rekordzie a to co nie jest tagiem img też w osobnych rekordach... EDYCJA 2: Problem rozwiązałem przy pomocy explode, preg_match i preg_replace. Pozdrawiam, ladovnik Ten post edytował ladovnik 3.02.2009, 12:24:00 |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat Crozin - Wave już ci odpisał. Ja używam xHTML 4.01 Widzę, że nikt nie zrozumiał ![]() <img ... alt="image" /> nie manic wspólnego z tym co mówi W3C. W alt ma się znaleźć tekst alternatywny, opisujący obrazek jego treści lub ew. działania. Wstawienie tam "image" jest kompletnie pozbawione sensu i IMHO pewnie słży jedynie This page is VALID ... document chociaż tak naprawdę nie będzie to "valid". W dodatku taki alt, wprowadza więcej złego niż dobrego. Co do tematu - jak napisałem pobierasz wyr.reg. wszystkie <img> i w callbacku sprawdzasz czy alt już jest. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 18:52 |