Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [HTML][PHP]Wyszukanie i zaawansowana zamiana w ciągu znaków
Armorek
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 1.11.2011

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


Witam, chciałbym mając jakiś tekst w formie HTML gdzieś w jakiejś zmiennej, tak jakby przefiltrować, wyszukać
  1. <img .... class="klasa"...>

czyli obrazek tylko z konkretna klasą, chciałbym pobrać jego parametry i zachować np. pobrać jego src="link", po adresie chcę sprawdzić rozmiary
  1. list($width, $height) = getimagesize($link);

oczywiście jeżeli nie ma w obrazku styli to chciałbym je stworzyć a jeżeli już są też je jakoś zachować dodając do stylu $width i $height, tak żeby było to w miarę uniwersalne.
Myślę że trzeba by użyć regexp ale do końca to nie wiem jak
powiedzmy chce zrobić coś w tym stylu:
  1. <?php
  2. $string = $item->text;
  3.  
  4. $pattern = '/<img(.*?)src="(.*?)"(.*?)style="(.*?)"(.*?)class="dopasowywana_grafika"(.*?)>/';
  5. $replacement = '$2';
  6. $link = preg_replace($pattern, $replacement, $string);
  7.  
  8. list($width, $height) = getimagesize($link);
  9.  
  10. $replacement = '/<img$1src="$2"$3style="$4 width:100%; max-width: $width px; max-height:$height px;"$5$6>/';
  11. $string = preg_replace($pattern, $replacement, $string);
  12.  
  13. echo $string;
  14. ?>

oczywiście to było tylko takie zebranie kodu i dopiero kombinowanie co będzie mi potrzebne i jak użyć ale żebyś czytając to zrozumiał co chcę zrobić, bo kod oczywiście działać nie ma prawa (IMG:style_emoticons/default/tongue.gif) Kwestia tego że nie wiem jakie dobrać funkcje i jak mógłbym to sklecić żeby tak wyciągnąć osobno link do sprawdzenia obrazka a potem przerobić kod obrazka z dodatkowymi stylami itd. a potem wpleść to spowrotem
Proszę o pomoc i pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
wNogachSpisz
post
Post #2





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


Cytat(Armorek @ 2.11.2011, 17:20:58 ) *
ktoś nie potrzebuje twojej pomocy to się obudziłeś, nagle taki pomocny chcesz być

Pomaganie Tobie przestało mnie interesować.
Teraz trzeba zadbać o to, abyś nie zaraził innych forumowiczów złymi praktykami.

Twój kod to gwałt na standardach, ja tego nie nazwałbym programowaniem,
to raczej budowanie zamku z piasku albo bliżej - z gówna.

Wyrażeń regularnych używaj tylko jeśli wiesz co robisz, Ty tego nie wiesz co poniżej udowodnie.

częśc wyrażenia:
Kod
<img.*?src

dopasuje nie tylko "<img src" ale też na przykład "<imgJESTEM UPARTY JAK OSIOŁsrc"
Ze znacznikiem img bedzie to mialo niewiele wspolnego, mimo to zostanie dopasowane.
Jeszcze raz powtórze to co napisałem wyżej, Twój kod może i działa jednak któregoś dnia przestanie.

Tak to powinno wyglądać:
  1. $dom = new DOMDocument;
  2. @$dom->loadHTML($data);
  3.  
  4. $imgList = $dom->getElementsByTagName('img');
  5. foreach ( $imgList as $img ) {
  6. if ( 'dopasowywana_grafika' === $img->getAttribute('class')) {
  7. $src = img->getAttribute('src');
  8. list( $width, $height) = getimagesize($src);
  9. $div->setAttribute( 'style', "width:{$width};height:{$height}" );
  10. }
  11. }
  12.  
  13. $data = $dom->saveHTML($data);


Ten post edytował wNogachSpisz 2.11.2011, 18:39:57
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 14.10.2025 - 07:52