Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]Zastępowanie tekstu, za pomocą wyrażeń regularnych
Worms
post
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 1.06.2006

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


Witam!

Mam mały problemik związany z wyrażenia mi regularnymi w php. Powiedzmy, że mam fragment źródła jakiejś strony, np:
  1. <div class="txt">
  2. <h3><a href="r/2t136">Pomyśl, zanim usiądziesz za kierownicą</a></h3>
  3. Zbyt niskie ciśnienie w oponach to grzech 90% kierowców. Są też źle zapięte pasy, niepoprawnie przewożone dzieci oraz wiele innych... <div class="more"><a href="r/2t137">więcej <strong>&raquo;</strong></a></div>
  4. <div class="opcje"><a href="r/2t138" class="galeria">Zobacz galerię</a>
  5. </div>
  6. </div>

I chciałbym napisać funkcję, która zamieniała by wszystkie słowa nie będące tagami html na duże litery, czyli w tym wypadku wynik miałby być taki:
  1. <div class="txt">
  2. <h3><a href="r/2t136">POMYŚL, ZANIM USIĄDZIESZ ZA KIEROWNICĄ</a></h3>
  3. ZBYT NISKIE CIŚNIENIE W OPONACH TO GRZECH 90% KIEROWCÓW. SĄ TEŻ ŹLE ZAPIĘTE PASY, NIEPOPRAWNIE PRZEWOŻONE DZIECI ORAZ WIELE INNYCH... <div class="more"><a href="r/2t137">WIĘCEJ <strong>&raquo;</strong></a></div>
  4. <div class="opcje"><a href="r/2t138" class="galeria">ZOBACZ GALERIĘ</a>
  5. </div>
  6. </div>

i niestety kompletnie nie mam pojęcia jak to zrobić... (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
probowałem za pomoca preg_replace, lecz niestety nie wiem zabardzo jakich wyrażeń tam użyć... :/
jakby mi ktoś pomógł, to byłbym wdzięczny (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Kicok
post
Post #2





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


Najprościej to chyba będzie zamienić wszystkie litery między > a najbliższym < na wielkie.

Wyrażenie nie powinno być takie trudne, tylko użyj preg_replace_callback" title="Zobacz w manualu PHP" target="_manual do wywołania funkcji, którą zamienisz sobie wielkość liter.
Go to the top of the page
+Quote Post
Worms
post
Post #3





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 1.06.2006

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


zrobiłem wszystko wegług wskazowek, niestety wyszło mi takie coś:
  1. <div class="txt"ARRAYh3ARRAYa href="r/2t136"ARRAY/aARRAY/h3ARRAYdiv class="more"ARRAYa href="r/2t137"ARRAYstrongARRAY/strongARRAY/aARRAY/divARRAYdiv class="opcje"ARRAYa href="r/2t138" class="galeria"ARRAY/aARRAY/divARRAY/div>
:/

a kod jakiego użyłem, to:
  1. <? $napis=preg_replace_callback('#>([^<>]*)<#si','strtoupper',$napis); ?>


:/
jak to zmodyfikować, aby działało?
Go to the top of the page
+Quote Post
slaug
post
Post #4





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 2.05.2003
Skąd: Gdańsk

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


  1. <?php
  2. function toUpper($matches)
  3. {
  4. return '>' . strtoupper($matches[1]) . '<';
  5. }
  6. $napis=preg_replace_callback('#>([^<>]*)<#si','toUpper',$napis);
  7. ?>


Zauważ tylko, że poprawnie to będzie działać tylko jeśli dobrze są napisane tagi htmla.

Ten post edytował slaug 26.05.2007, 23:07:11
Go to the top of the page
+Quote Post

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: 23.08.2025 - 05:05