Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][HTML] Zamknięcie tagu img, wyrażenia reguralne, preg, podmiana ciągów znaków, zamknięcie tagu img
Zdunek
post
Post #1





Grupa: Zarejestrowani
Postów: 57
Pomógł: 2
Dołączył: 29.08.2008

Ostrzeżenie: (0%)
-----


Witam

Tworzę portal na bazie IPB i muszę dokonać konwersji img na zgodny ze specyfikacją w3c
sam kod który dostaję z ipb
<img src="style_emoticons/%3C#EMO_DIR#%3E/smile.gif" style="vertical-align: middle;" emoid=":)" alt="smile.gif" border="0">
bez problemu udało mi się zmienić ścieżkę($dane=str_replace('style_emoticons/%3C#EMO_DIR#%3E', $this->forum_adres.'style_emoticons/default', $dane) winksmiley.jpg
oraz usunąć emoid="*" ($dane=preg_replace('#emoid=\"[^\"]+"#', "", $dane) winksmiley.jpg
i pozostaje problem zamknięcia tagu />
nie mam bladego pojęcia jak to zrobić

Z góry dzięki za pomoc

Pozdrawiam
Zdunek
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
isso
post
Post #2





Grupa: Zarejestrowani
Postów: 296
Pomógł: 32
Dołączył: 3.01.2005

Ostrzeżenie: (0%)
-----


a nie masz dostępu bezpośrednio do kodu html;> ?


--------------------
Go to the top of the page
+Quote Post
Zdunek
post
Post #3





Grupa: Zarejestrowani
Postów: 57
Pomógł: 2
Dołączył: 29.08.2008

Ostrzeżenie: (0%)
-----


Cytat(isso @ 1.02.2009, 15:46:07 ) *
a nie masz dostępu bezpośrednio do kodu html;> ?


chodzi o to że wyciągam dane z bazy danych, w tym przypadku emotikony i jak ktoś doda emotkę w poście który będzie chociażby w komentarzach na portalu to już się kaszani, a chcę by portal był w pełni zgodny z w3c
Go to the top of the page
+Quote Post
isso
post
Post #4





Grupa: Zarejestrowani
Postów: 296
Pomógł: 32
Dołączył: 3.01.2005

Ostrzeżenie: (0%)
-----


wydaje mi się, że ciężko będzie napisać takie wyrażenie regularne... prędzej bym pozamykał wszystkie ikonki smile.gif ale to też cale życie zajmie smile.gif


--------------------
Go to the top of the page
+Quote Post
Zdunek
post
Post #5





Grupa: Zarejestrowani
Postów: 57
Pomógł: 2
Dołączył: 29.08.2008

Ostrzeżenie: (0%)
-----


myślałem żeby ew. <img * > zamienić na <img * ></img>
ale nie mam za bardzo pomysłu jak to zrobić
Go to the top of the page
+Quote Post
Pax95
post
Post #6





Grupa: Zarejestrowani
Postów: 50
Pomógł: 7
Dołączył: 31.01.2009

Ostrzeżenie: (0%)
-----


hmm... A może to wyglądać tak?:

  1. <?php
  2. $KeysToChange = array( 'img', 'br', 'hr' );
  3. foreach ( $KeysToChange as $Value )
  4. {
  5.   // Zamień znaczniki <$Value> na <$Value />
  6. }
  7. ?>


--------------------
Nie zapomnij o
Go to the top of the page
+Quote Post
Zdunek
post
Post #7





Grupa: Zarejestrowani
Postów: 57
Pomógł: 2
Dołączył: 29.08.2008

Ostrzeżenie: (0%)
-----


Cytat(Pax95 @ 1.02.2009, 17:09:00 ) *
hmm... A może to wyglądać tak?:

  1. <?php
  2. $KeysToChange = array( 'img', 'br', 'hr' );
  3. foreach ( $KeysToChange as $Value )
  4. {
  5.   // Zamień znaczniki <$Value> na <$Value />
  6. }
  7. ?>

może, ale chodzi o flaki img, by były te same...
Go to the top of the page
+Quote Post
Pax95
post
Post #8





Grupa: Zarejestrowani
Postów: 50
Pomógł: 7
Dołączył: 31.01.2009

Ostrzeżenie: (0%)
-----


flaki? Spróbowałbym coś napisać, ale nie umiem pisać wyrażeń regularnych dla preg (mogę coś spróbować z ereg).


--------------------
Nie zapomnij o
Go to the top of the page
+Quote Post
Zdunek
post
Post #9





Grupa: Zarejestrowani
Postów: 57
Pomógł: 2
Dołączył: 29.08.2008

Ostrzeżenie: (0%)
-----


Cytat(Pax95 @ 1.02.2009, 17:18:53 ) *
flaki? Spróbowałbym coś napisać, ale nie umiem pisać wyrażeń regularnych dla preg (mogę coś spróbować z ereg).

flaki czyli wszystko co jest w znaczniku html
<img src="style_emoticons/%3C#EMO_DIR#%3E/smile.gif" style="vertical-align: middle;" emoid=":)" alt="smile.gif" border="0">
nie ważne czy w preg, czy ereg, ważne by działało
Byłbym bardzo wdzięczny za napisanie tego winksmiley.jpg
Go to the top of the page
+Quote Post
Pax95
post
Post #10





Grupa: Zarejestrowani
Postów: 50
Pomógł: 7
Dołączył: 31.01.2009

Ostrzeżenie: (0%)
-----


Pewnie coś zrobiłem źle, ale zobaczymy winksmiley.jpg - będziemy myśleć dalej

  1. <?php
  2. $SourceCode = ereg_replace( "<[:blank:]*" .$Value. "(.*)>", "<" .$Value. " 1 />", $SourceCode );
  3. ?>


--------------------
Nie zapomnij o
Go to the top of the page
+Quote Post
Zdunek
post
Post #11





Grupa: Zarejestrowani
Postów: 57
Pomógł: 2
Dołączył: 29.08.2008

Ostrzeżenie: (0%)
-----


po małych przeróbkach działa idealnie, dzięki
Edit:Chociaż nie
$dane=ereg_replace( "^<img" .$Value. "(.*)>$", "<img".$Value. " \\1 />", $dane );
takich ciągów z obrazkami jest kilka, podmienia mi tylko ostatni biggrin.gif

Ten post edytował Zdunek 1.02.2009, 18:52:11
Go to the top of the page
+Quote Post
Pax95
post
Post #12





Grupa: Zarejestrowani
Postów: 50
Pomógł: 7
Dołączył: 31.01.2009

Ostrzeżenie: (0%)
-----


Czemu nie pozostawiłeś takiego, jaki ci dałem?

  1. <?php
  2. $dane=ereg_replace( "<img(.*)>", "<img 1 />", $dane );
  3. ?>


--------------------
Nie zapomnij o
Go to the top of the page
+Quote Post
Zdunek
post
Post #13





Grupa: Zarejestrowani
Postów: 57
Pomógł: 2
Dołączył: 29.08.2008

Ostrzeżenie: (0%)
-----


Cytat(Pax95 @ 1.02.2009, 18:57:04 ) *
Czemu nie pozostawiłeś takiego, jaki ci dałem?

  1. <?php
  2. $dane=ereg_replace( &#092;"\", \"<img 1="">\", $dane );
  3. ?>

ciągle podmienia ostatni img
zmieniłem bo chcę by zamykało samo img oraz ustawiłem początek^ i koniec$
jeszcze zauważyłem jedną rzecz, jeśli img jest domknięty to dorzuca jeszcze jedno /
Go to the top of the page
+Quote Post
Pax95
post
Post #14





Grupa: Zarejestrowani
Postów: 50
Pomógł: 7
Dołączył: 31.01.2009

Ostrzeżenie: (0%)
-----


^ i $ oznaczają koniec stringu, nie wyrażenia regularnego.

Spróbuj tak:
  1. <?php
  2. $dane=ereg_replace( "<img(.*)/*>", "<img 1 />", $dane );
  3. ?>


--------------------
Nie zapomnij o
Go to the top of the page
+Quote Post
Zdunek
post
Post #15





Grupa: Zarejestrowani
Postów: 57
Pomógł: 2
Dołączył: 29.08.2008

Ostrzeżenie: (0%)
-----


nadal zamyka tylko ostatni, zdaje mi się że to z tego kodu
<img src="ipb/style_emoticons/default/smile.gif" style="vertical-align: middle;" alt="smile.gif" border="0"><img src="ipb/style_emoticons/default/smile.gif" style="vertical-align: middle;" alt="smile.gif" border="0"><div id="all">
zaczyna się na pierwszym otwarciu <img a kończy na drugim zamknięciu > wyciąga wszystko w środku, a dla tego że po pierwszym <img robi się dodatkowa spacja
<img src="ipb/style_emoticons/default/smile.gif" style="vertical-align: middle;" alt="smile.gif" border="0"><img src="ipb/style_emoticons/default/smile.gif" style="vertical-align: middle;" alt="smile.gif" border="0" /><div id="all">
Go to the top of the page
+Quote Post
Pax95
post
Post #16





Grupa: Zarejestrowani
Postów: 50
Pomógł: 7
Dołączył: 31.01.2009

Ostrzeżenie: (0%)
-----


Nie wiem, jaka jest tego przyczyna, możemy dalej kombinować.

  1. <?php
  2. $dane=ereg_replace( "<img(.*)(/>|>)", "<img 1 />", $dane );
  3. ?>


--------------------
Nie zapomnij o
Go to the top of the page
+Quote Post
Zdunek
post
Post #17





Grupa: Zarejestrowani
Postów: 57
Pomógł: 2
Dołączył: 29.08.2008

Ostrzeżenie: (0%)
-----


Cytat(Pax95 @ 1.02.2009, 19:19:41 ) *
Nie wiem, jaka jest tego przyczyna, możemy dalej kombinować.

  1. <?php
  2. $dane=ereg_replace( &#092;"|>)\", \"<img 1="">\", $dane );
  3. ?>

ciągle to samo
daję tak mniej wiecej uproszczony kod bez funkcji, wraz z danymi
  1. <?php
  2. $dane='<img src="style_emoticons/%3C#EMO_DIR#%3E/smile.gif" style="vertical-align: middle;" emoid=":)" alt="smile.gif" border="0"><img src="style_emoticons/%3C#EMO_DIR#%3E/smile.gif" style="vertical-align: middle;" emoid=":)" alt="smile.gif" border="0">';
  3. $dane=str_replace('style_emoticons/%3C#EMO_DIR#%3E', 'ipb/style_emoticons/default', $dane);
  4. $dane=preg_replace('#emoid=\"[^\"]+"#', "", $dane);
  5. $dane=ereg_replace( "<img(.*)(/>|>)", "<img 1 />", $dane );
  6. echo $dane;
  7. ?>
Go to the top of the page
+Quote Post
Pax95
post
Post #18





Grupa: Zarejestrowani
Postów: 50
Pomógł: 7
Dołączył: 31.01.2009

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $dane=ereg_replace( "<img([a-zA-Z0-9=/\":-;().][:blank:])*>", "<img 1 />", $dane );
  3. ?>


Ten powinien działać, ale nie jest uniwersalny! W
Kod
[a-zA-Z0-9=/":-;().]
dodawaj między [ i ] znaki, które znajdują się w <img >

Ten post edytował Pax95 1.02.2009, 19:41:43


--------------------
Nie zapomnij o
Go to the top of the page
+Quote Post
Zdunek
post
Post #19





Grupa: Zarejestrowani
Postów: 57
Pomógł: 2
Dołączył: 29.08.2008

Ostrzeżenie: (0%)
-----


niestety nie działa
Go to the top of the page
+Quote Post
Pax95
post
Post #20





Grupa: Zarejestrowani
Postów: 50
Pomógł: 7
Dołączył: 31.01.2009

Ostrzeżenie: (0%)
-----


A powinno. Coś zrobiłem źle, ale przynajmniej wiem, czemu wtedy nie działało. Niech ktoś inny poprawi.


--------------------
Nie zapomnij o
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 19:05