Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][CSS]Wychodzący tekst i nowa linia
Forum PHP.pl > Forum > Przedszkole
Strarus
cześć:)
Chciałbym zrobić automatycznie generowany kod, który wyświetliłby pokolorowane za pomocą funkcji highlight_string ciągi znaków w nowej lini i pokazywał numer lini, czyli coś takiego jak jest tutaj smile.gif example:
  1. <?php
  2. if(isset( $_GET[ 'site' ] )){
  3. $site = htmlspecialchars( $_GET['site'] ) .'.inc.php';
  4. if( file_exists( $site )){
  5. include( $site );
  6. }else{
  7. echo'strona o podanym adresienie istnieje';
  8. }
  9. }else{
  10. echo ':)';
  11. }
  12. ?>
Jak widać po lewej stronie są numery lini 1,2 itd. I jak coś takiego zrobić? Drugie pytanie wiąże się z pierwszym. Mam div o jakimś id zdefiniowanym w style.css. Jakiej funkcji css użyć, aby w przypadku, gdy zabraknie miejsca w lini, tekst był automatycznie przenoszony do następnej lini questionmark.gif PS. próbowałem display:block; ale nie pomaga...
piotrooo89
co to pierwszego to: http://www.google.pl/search?q=bbcode+php&a...lient=firefox-a
hiszpanespaniol
co do kolorowania składni, to jest to kupa roboty jeśli się chce samemu. jednak numerowanie linii da się łatwo uzyskać. wiemy, że każda linia pliku tekstowego, to kolejny element tablicy (uzyskanej za pomocą funkcji file). czyli wyświetlasz oprócz wartości elementu tablicy także jego numer. obsługę file znajdziesz w manualu, foreach także. są przykłady dobre.

swoją drogą zapoznaj się z projektem "codepress", jest chyba na licencji cc więc można stosować. tam jednak numerowanie linii uzyskali w css: po prostu dali obrazek z liczbami, bardzo wysoki, ma z 2000 liczb. ten obrazek wrzucają jako tło dla textarea w którym jest kod.

odnośnie drugiego problemu: wystarczy zdefiniować szerokość elementu. Od razu piszę: jeżeli wystąpi przypadek, że jeden wyraz będzie szerszy od szerokości Twojego czegoś (np div'a), to niema rady na to, żeby się załamał o następnej linii. trzeba wtedy kombinować z javascript. css'em może jedynie ucinać taki wyraz (często są to linki) za pomocą overflow-x: hidden
Strarus
Dzięki, nie będzie problemu z długością, bo to tylko dla mojego użytku. Ale overflow-x: hidden chyba ukrywa resztę? Zastosuję chyba to z tym obrazkiem smile.gif
hiszpanespaniol
no dosłownie zasłania tekst który się nie zmieści, może się zdarzyć, że nawet w połowie literki smile.gif.
wrzucaj tekst do elementu blokowego o zdefiniowanej szerokości i się sam tekst będzie zawijał do nowej linii.
Cytat
Zastosuję chyba to z tym obrazkiem

wg mnie jednak lepiej to z numerowaniem normalnym, ale to już kwestia gustu.
Strarus
Na razie pozostanę przy obrazku, bo ładnie wygląda haha.gif
Kod CSS:
Kod
#kolor {
    background-image: url(back.jpg);
    font-family: verdana;
    font-size: 14px;
    color: navy;
    border: 1px navy solid;
    width: 700px;
    display: block;
    overflow-x: hidden;
}

Kod php mi wystaje i to właśnie przecięty w połowie litery haha.gif Myślałem nad funkcją php wordwrap ale ona się chyba nie sprawdzi...
hiszpanespaniol
skasuj to hidden skoro masz zwykłe słowa krótkie i zdefiniowaną szerokość. jeszcze może dodaj background-repeat: repeat-x żeby nie było niespodzianek
Strarus
chyba repeat-y smile.gif ale co z tą nową linią questionmark.gif teraz wystają mi słowa poza div...

edit: a jeszcze pytanie: jest może coś takiego w php, że "po n znaków daj <br/>" questionmark.gif
hiszpanespaniol
racja, y.
czysty tekst wewnątrz elementu blokowego o zdefiniowanej szerokości nie może wystawać (pomijając zbyt długie wyrazy). musisz mieć jakieś style co mieszają. Albo nie masz czystego tekstu tylko jakieś dodatkowe HTML wewnątrz tego div. Jak to u Ciebie wygląda? css podałeś, możesz wynikowy HTML też podać?

edit:
Cytat
a jeszcze pytanie:

jest na to wiele sposobów, ale nie jest to dobre rozwiązanie jeśli tylko chcesz zawinąć tekst
Strarus
Wszystko jest tutaj:
http://strarus.cba.pl/index.php?site=other smile.gif
phpion
A nie lepiej do numerowania linii zastosować listę <ol>? Wtedy podczas zaznaczania kodu numerki się nie skopiują (co w przykładzie ~hiszpanespaniol będzie miało miesjce).
Strarus
Może i tak, ale wtedy trzeba dodawać ręcznie przy każdej linijce <li/>...
hiszpanespaniol
@phpion masz absolutną rację. najzwyklejsza lista numerowana.
@Strarus pod podanym linkiem nic nie ma, 404.

powiedzmy, że masz kod zapisany w pliku tekstowym, to wtedy robisz tak:
  1. <?php
  2. $plik = 'kod.txt';
  3.  
  4. $tekst = file($plik)
  5. $kolorowo = '<ol>';
  6. foreach ($tekst as $linijka) {
  7. $kolorowo .= '<li>'.$linijka.'</li>';
  8. }
  9. $kolorowo .= </ol>;
  10.  
  11. echo $kolorowo;
  12. ?>


edit:

Cytat
dlaczego w $kolorowo .= </ol>; po kolorowo jest .

to jest po to, żeby dopisywać rzeczy na końcu zmiennej, ale żeby tej zmiennej nie nadpisywać.
Strarus
Ok, dzięki będzie wygodniej, bo będę umieszczał skrypty w plikach txt smile.gif Jak 404?? Mi się otwiera smile.gif

jeszcze jedno pytanie: dlaczego w $kolorowo .= </ol>; po kolorowo jest . questionmark.gif

i jeszcze jedno haha.gif jak zrobić, żeby pokazywały się te liczby po lewej? a kod na środku?
hiszpanespaniol
nic nie musisz robić. lista numerowana sama wyświetla sobie numerki, bez żadnych css'ów. cssem możesz dopieścić wygląd takiej listy, ewntualnie skoro pytasz jak zrobić wyświetlanie liczb, to możliwe, że masz gdzieś list-style ustawione na none dla listy.

do czego służy ".=" napisałem w poprzednim poście.
Strarus
Dzięki wielkie smile.gif

edit: mam teraz problem z zakolorowaniem składni...

Jak mam ten kod:
  1. <?php
  2.  
  3. $plik = 'kod.txt';
  4.  
  5. $tekst = file($plik);
  6.  
  7. $kolorowo = '<ol>';
  8.  
  9. foreach ($tekst as $linijka) {
  10.  
  11. $kolorowo .= '<font class="left"><li></font>'.$linijka.'</li>';
  12.  
  13. }
  14.  
  15. $kolorowo .= '</ol>';
  16.  
  17. echo $kolorowo;
  18.  
  19. ?>

To gdzie mam dać highlight_string questionmark.gif Bo chcę to wyświetlać tak jak to jest na tym forum (tylko, że tutaj są table), a u mnie może być na tym co jest teraz smile.gif
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.