Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Usuwanie tagu z atrybutów tagu
hobibit
post
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 22.03.2008

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


Witam. Mam problem i nie wiem jak go rozwiązać. Pewnie trzeba użyć wyrażeń regulanych, ale nie udało mi sięnapisać takiego które by zadziałało poprawnie.
Mam taką sytułację:
  1. <div atrybut="wartosc1 <b>wartosc2</b> wartosc3" <b>coś</b> inny_atrybut="inna_wartosc" >dowolna treść</div>

Jak widać tag <b> jest wstawiony w atrybutach <div>, tak być nie powinno, chcę go usunąć razem z zawatrością żeby otrzymać:
  1. <div atrybut="wartosc1 wartosc3" inny_atrybut="inna_wartosc" >dowolna treść</div>

Jednak artybuty i ich wartości się zmieniają, czyli nie ma tak że klasa jest zawsze pierwsza a id drugie, mogą występować w dowolnej kolejności i mogą się pojawić jeszcze inne atrybuty.

Co zrobić żeby usunąć tag <b> z atrybutów innego tagu?

Ten post edytował hobibit 24.07.2013, 11:28:24
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
hobibit
post
Post #2





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 22.03.2008

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


Nie nie tylko z atrybutów.
Mam już prawie działający kod:
  1. $content = '111 <div style="color:red<b>222</b>" 333 <b>444</b> 555>666</div> <b>777</b> 888';
  2. preg_replace('/<([^<^>]+)<b>.+?<\/b>([^>]+)>/', '<\\1\\2>', $content);


Jednak ma wadę. Kiedy w jednym tagu występuje więcej niż jedno <b>tresc</b> to usuwa tylko jedno (pierwsze).

Czy jest jakaś opcja że w wyrażeniu regularnym używam zagnieżdzonych nawiasów (), tylko jak się odwołać wtedy do jednego z nawiasów w środku
  1. ((a)(b))
? gdybym zwrócił \\1 to wypluje 'ab', co zrobić żeby zwróciło tylko 'a':
  1. <([^<^>]+) ( (<b>.+?<\/b>) ([^>]+) )+ >


Ten post edytował hobibit 24.07.2013, 14:24:54
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: 5.10.2025 - 07:53