Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Podmiana wartości w stringu
Forum PHP.pl > Forum > Przedszkole
sadistic_son
Witam,

Mam string który zawiera 2 parametry: width i height + mnóstwo innych rzeczy. Np:

<object width="560" height="340"> reszta stringu, cale mnostwo roznych znakow allowfullscreen="true" width="560" height="340"></embed></object>

Takich stringów mam setki i każdy ma inne wartości width i height. Jak podmienić je wszystkie na podstawione przeze mnie? Wiem ze wyrażeniami regularnymi ale może jakaś dokładniejsza podpowiedź?
wookieb
No to skoro wiesz, że wyrażeniami to powiem Ci jaką funkcją.
preg_replace
sadistic_son
To też wiem, ale jak wychwycić wartość liczbową znajdującą się np. między height=" a " ?
wookieb
A jak myślisz co osoba nieznająca wyrażeń regularnych wpisałaby w google?
Sorry ale widać, że nawet nic nie próbowałeś. A jak próbowałeś to pochwal się dokonaniami. My nie ROBIMY za kogoś tylko POMAGAMY w czymś.
sadistic_son
Próbowałem, próbowałem. Problem polega na tym, że podmienia wszystikie liczby w stringu a nie tylko te po height=" a przed "
  1. $string='height="897559" border="90"';
  2.  
  3. $string=preg_replace('([0-9]..)','1',$string);
  4. echo $string;
To wyświetli height="111111" border="11" zamiast height="1" border="90".

Wiem, że źle kombinuję ale jestem zielony z wyrażeń regularnych. Przejrzałem pare tutoriali ale niewiele mi dały.
strife
O coś takiego Ci chodzi?

  1. $string='height="897559" border="90"';
  2. $string=preg_replace('([0-9]+)','1',$string);
  3.  
  4. echo $string;


Tyle, że to zawartości border, nie zmienia w sposób w jaki chciałeś, ale jak konkretnie miało by ją zmieniać?

Pozdrawiam.
sadistic_son
Chodzi mi o to aby border="7585" width="24536" i wszystkie inne wartosci zostaly nietkniete a jedynie height="xx" zostalo podmienione na np. height="5".

Innymi slowy ze stringu zawierajacego w sobie kod html pozamieniac tylko wysokosci wszystkich elementow, czyli tylko wartosci height.

EDIT: Już wpadłem jak to zrobić:
  1. $string='width="3378" height="2904" border="120" ';
  2.  
  3. $string=preg_replace('(height="[0-9]+")','height="5"',$string);
  4. echo $string;
strife
Cytat(sadistic_son @ 22.05.2010, 17:03:21 ) *
Chodzi mi o to aby border="7585" width="24536" i wszystkie inne wartosci zostaly nietkniete a jedynie height="xx" zostalo podmienione na np. height="5".

Innymi slowy ze stringu zawierajacego w sobie kod html pozamieniac tylko wysokosci wszystkich elementow, czyli tylko wartosci height.


Hm..

  1. <?php
  2. $string = 'border="7585" height="24536"';
  3.  
  4. // zamiana height
  5. $string = preg_replace('/(height=")([0-9]+)(")/','$1HEIGHT_X$3',$string);
  6. // echo $string;
  7.  
  8. // zamiana border
  9. $string = preg_replace('/(border=")([0-9]+)(")/','$1BORDER_X$3',$string);
  10. echo $string;
  11.  
  12. ?>


Pisanie z palca, nie wiem czy będzie działać. W dobrym kierunku idę?

Pozdrawiam.
sadistic_son
W dobrym. Wystarczy to lekko zmodyfikować i daje żądany efekt.

Dzięki za zainteresowanie tematem.
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.