Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Zastępowanie tekstu
Forum PHP.pl > Forum > Przedszkole
Worms
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ć... 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 smile.gif
Kicok
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.
Worms
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?
slaug
  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.
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.