Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dzielenie ciągu wyrażeniem regularnym, według tagów HTML
mike
post
Post #1





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Witam, mam dość nietypowy problem, z którym nie mogę sobie poradzić, ponieważ nie znam wyrażeń regularnych, a nie podejrzewam, że można go rozwiązać w inny sposób.

Problem jest następujący:
Chciałbym z takiego oto ciągu:
Cytat
Jakiś tekst <sup>napisany w </sup> indeksie <sub>dolnym</sub>

uzyskać taką tablicę:
Kod
Array
(
    [0] => Jakiś tekst
    [1] => napisany w
    [2] => indeksie
    [3] => dolnym
)

Chociaż z drugiej strony przechodząc po takiej tablicy nie będę wiedział w jakim tagu (lub bez) był fragment, więc chyba dobrym pomysłem będzie żeby ciągi zawierały tagi:
Kod
Array
(
    [0] => Jakiś tekst
    [1] => <sup>napisany w</sup>
    [2] => indeksie
    [3] => <sub>dolnym</sub>
)
wtedy już da radę takie informacjie wyłuskać.

Tagów może być dowolna ilość, ale zawsze będe pozamykane i nie będą się zagnieżdżały, ani przecinały: <sup><sub></sup></sub>

Jeśli ktoś ma pomysł jak ugryść ten temat, bardzo proszę o podzielenie się.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
hwao
post
Post #2


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




oczywiscie ze sie da;)
Pisałem ze zapraszam do Manuala (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) preg_split() (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Pokaze Ci cos hardcorowego (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

  1. <?php
  2. $pattern = '/(<(?:[^<>]+(?:"[^"]*"|\\'[^']*\')?)+>)/';
  3.  
  4.  $html_string = '<html><body><p class="a<weird>name">The classname is not seen as a different tag</p></body></html>';
  5. $html_array = preg_split ('/(<(?:[^<>]+(?:"[^"]*"|\\'[^\\']*\\')?)+>)/', trim ($html), -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
  6. ?>

Zródło preg_split() - komentarze, autor: Jappie

wyplowa
Kod
Array
(
   [0] => <html>
   [1] => <body>
   [2] => <p class="a<weird>name">
   [3] => The classname is not seen as a different tag
   [4] => </p>
   [5] => </body>
   [6] => </html>
)


Oczywiscie sa tez dzialajace prosciej i szybciej (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

---
Chylę czoła.
~nospor wlep mi ostrzeżenie za niewiedzę (IMG:http://forum.php.pl/style_emoticons/default/laugh.gif)
~mike_mech
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: 4.10.2025 - 23:25