Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/mysql/html]Indeks górny w danych z bazy?
Forum PHP.pl > Forum > PHP
Myszkina
[php][sql][html]
Witam
Czy jest możlie aby w wyświetlonym tekscie z bazy danych jakiś fragment tekstu był sformatowany na indeks górny.
dla przykładu:
w bazie mam umieszczony tekst np. "Mała myszka szuka sera, Gouda[a] albo Radamera[b]" i tak również wyświetla sie na stronie.
i tak [a] oraz [b] oznaczaja indeks górny a i b , bo nie wiem jak zrobić aby było wyświetlone jak poniżej i czy wogóle coś takiego można zrobić
Mała myszka szuka sera, Goudaa albo Radamerab

Z góry dzieki za jakakolwiek pomoc
wipo
Jasne że się da tylko nie [sup] tylko <sup>
Myszkina
tyle to wiem tutaj dla przykładu chciałam zastosowac bbcode ale nie zadziałał
wywołuje teks z bazy danych poprzez php każde zdanie lub kilka zdań jest jednym rekoredm.
wipo
to musisz albo zastosować wyrażenia regularne albo str_replace

Dla przykładu
  1. <?php
  2. print str_replace('[sup]','<sup>',$tekst);
  3. ?>
Myszkina
wielkie dzięki zadziałało musiałam zrobić małą modyfikacje , ale jeszcze jedno pytanko teraz zmienia mi tylko z takiego zapisu "[1]" na własciwy indeks górny czyli "<sup>1</sup>" i u siebie zrobiłam to tak
Kod
$zawartosc = stripslashes($row['zawartoscdok']);
$zmiana = str_replace("[1]", "<sup>1</sup>", $zawartosc);

ale w tym tekscie mam inne znaki np. [2], [3], [a],[b], które musze zmienic na te indeksy górne jak to zrobić prosto bez stosowania wielu zmiennych
wipo
Poczytaj tutaj o wyrażeniach regularnych
http://pl.php.net/manual/pl/function.preg-replace.php
Myszkina
sadsmiley02.gif
troche mi pomogło ale te wyrażenia regularne to dla mnie narazie czarna magia udało mi sie cos takiego , ale czy nie da sie tego jakoś uprościć musze pozamieniac tak kilknascie rekordów w różnych tabelach , a prócz cyfr mam jeszcze w tekscie do podmiany przy wyświetleniu coś takiego [a] , [a-a]
Kod
$zawartosc = stripslashes($row['zawartoscdok']);
$wzorzec = array(    '/\[1\]/','/\[2\]/','/\[3\]/','/\[4\]/','/\[5\]/','/\[6\]/','/\[7\]/','/\[8\]/','/\[9\]/','/\[10\]/');
$zamiana = array(    '<sup><small>1</small></sup>','<sup><small>2</small></sup>','<sup><small>3</small></sup>','<sup><small>4</small></sup>','<sup><small>5</small></sup>','<sup><small>6</small></sup>','<sup><small>7</small></sup>','<sup><small>8</small></sup>',
         '<sup>9</sup>','<sup>10</sup>');

$zawartosc = preg_replace($wzorzec, $zamiana, $zawartosc);
eai
  1. <?php
  2.  
  3. $zawartosc = preg_replace('/[sup](.*)[sup]/si', '<sup>1</sup>', $zawartosc);
  4. ?>

Pisane z palca, ale powinno zadziałać
Myszkina
smile.gif
Dzieki eai i wipo poczytałam troche a potem zmodyfikowałam ten kod od eai
Cytat
Kod
<?php
$zawartosc = preg_replace('/\[sup\](.*)\[sup\]/si', '<sup>\\1</sup>', $zawartosc);
?>

na taki
Kod
$zawartosc1 = preg_replace('/\[(.*?)\]/si', '<sup>\\1</sup>', $zawartosc);
i działa tak jak chciałam , czyli z wyrazenia [1] zmienia mi na indeks gorny 1.
zrobiłam jeszcze drugi kod do zamieniana takich [a] ,[a-],[-a] (tutaj zamias "a" w nawiasach kwadratowych może być jakaś mała litera)wyglada tak i działa
Kod
<?php
preg_replace('/\[(.-?.)\]|\[(.-?)\]/si', '<sup>\\1\\2</sup>', $zawartosc);
?>


z tym że chciała bym aby nie zmieniał wogóle jak występuje [s] jak dołaczyć takie wykluczenie do tego co mam

z góry dzieki

udało się
zrobiłam tak
Kod
<?php
$zmienna=preg_replace('/\[(.?[^s].?)\]/si', '<sup>\\1</sup>', $zmienna);?>


biggrin.gif DZIĘKI
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.