Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Preg replace oraz limit
-gracz-
post
Post #1





Goście







witam, mam problem z limitem jeśli chodzi o preg replace.
otóż mam taki kod;

  1. $pattern = '#<div id="identyfikator" class="contentDescription">(.*?)</div>#';
  2. $rlimit = ($numBlocks - 1);
  3. $html = preg_replace($pattern, 'replace to', $html, $rlimit);


w kodzie html pojawia się kilka divów, które mają ten sam identyfikator (id="identyfikator") oraz tą samą klasę - tylko środek się różni tego diva
chodzi oto, żeby zastosowac limit - w tej chwili wszystko mi kasuje - jakby limit w ogóle nie działał.

obecnie:
w kodzie pojawiają się takie dwa divy
a zmienna $rlimit zwraca 1
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #2





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Cytat(gracz @ 26.06.2013, 10:48:25 ) *
witam, mam problem z limitem jeśli chodzi o preg replace.
otóż mam taki kod;

  1. $pattern = '#<div id="identyfikator" class="contentDescription">(.*?)</div>#';
  2. $rlimit = ($numBlocks - 1);
  3. $html = preg_replace($pattern, 'replace to', $html, $rlimit);


w kodzie html pojawia się kilka divów, które mają ten sam identyfikator (id="identyfikator") oraz tą samą klasę - tylko środek się różni tego diva
chodzi oto, żeby zastosowac limit - w tej chwili wszystko mi kasuje - jakby limit w ogóle nie działał.

obecnie:
w kodzie pojawiają się takie dwa divy
a zmienna $rlimit zwraca 1


Co się stanie jak wpiszesz $rlimit na sztywno? Np. 1?

Inna kwestia. Wyobraź sobie, że Twój HTML wygląda tak:

  1. <div id="identyfikator" class="contentDescription">jakas tresc pierwszego diva</div>
  2. <div id="identyfikator" class="contentDescription">jakas tresc drugiego diva</div>


Więc ów pattern:

  1. $pattern = '#<div id="identyfikator" class="contentDescription">(.*?)</div>#';


Zwróci 3 wyniki (a nawet więcej, ale są tu nieistotne):

  1. jakas tresc pierwszego diva

  1. jakas tresc pierwszego diva</div><div id="identyfikator" class="contentDescription">jakas tresc drugiego diva

  1. jakas tresc drugiego diva


Poza tym, powinno występować tylko jeden raz dane id w całym dokumencie (a przynajmniej tak jest w założeniu).


Ten post edytował b4rt3kk 26.06.2013, 10:04:42


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
-Gość-
post
Post #3





Goście







nic, efekt będzie ten sam - ponieważ zmienna $rlimit zwraca właśnie int(1);
coś mi się wydaje, że tu wchodzi konflikt z kodem html lub błędną samą regułkę - jak tworze sobie plik np. test.php
i daje tam zapis:

  1. $s = 'Forum PHP, swiat PHP';
  2. var_dump(preg_replace('/PHP/', '', $s, 1)); // zwraca string: Forum , swiat PHP


powyższy przykład jest OK, ale dodam teraz kod html;
  1. var_dump(preg_replace('/<b>(.*)<\/b>/', '', $s, 1)); // zwraca string: Forum
Go to the top of the page
+Quote Post
-Gość-
post
Post #4





Goście







czyli jak regułka ma wyglądać? głowie się, kombinuje, itd
- jeśli chodzi o unikalny identyfikator to wiem - mam po prostu funkcje, ktora generuje dany wynik i teraz chce zredukowac liczbę tych kodów przez preg_replace z limitem, ale coś nie działa
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #5





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Reguła musi sprawdzać, czy pomiędzy <div> a </div> nie znajduje się wewnątrz jakiś inny <div> (myślę, że wystarczy wykluczyć we wzorcu samo <, jeśli nie masz już tam innych elementów HTML).


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post

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: 21.08.2025 - 10:01