Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skracanie php (w stylu truncate)
Forum PHP.pl > Forum > PHP
oczko991
Mam coś takiego

  1. <div class="naglowek"><img src="img/menutitle3.png"/></div>
  2. <div class="srodek menu">
  3. <?php
  4. $q = mysql_query("SELECT * FROM `mp3` WHERE `url` IS NOT NULL ORDER BY RAND() LIMIT 6");
  5. while($row = mysql_fetch_assoc($q))
  6. echo '<a href="mp3/'.$row['id'].'/'.url($row['title']).'/">'.stripslashes($row['title']).'</a>';
  7. ?>
  8.  
  9.  
  10. </div>
  11. <div class="stopka"></div>

Lecz wywala mi tekst poza linijkę chciałem skrócić echo do 10 znaków. Proszę o pomoc.
piotrooo89
substr
oczko991
A mógłbyś troszkę dopomóc, bo wpadłem na tą funkcję ale nie potrafię jej wstawić do mojego kodu php.
jeśli tylko raz mi pokażesz już zawsze będe wiedział co i jak, i resztę strony poprawię sobie już sam. ale potrzebuje żebyś ty mi pokazał albo chociaż zaczał co gdzie wstawić
Sephirus
Użycie jest przecież proste smile.gif

Zakładasz sobie ile maks. znaków chcesz wyświetlać w linii - dajmy na to 50.

i teraz tak:

  1.  
  2. $text = 'jakis za dlugi tekst, ktory wychodzi poza jakas tam linijke i bardzo brzydko wyglada i tak dalej i tym podobne.';
  3.  
  4. if(strlen($text) > 50) $text = substr($text,0,50).'...'; // jeśli długość większa od 50 to ucinaj od 0 - 50 znaków i dodaj "..." inaczej zostaw jak jest
  5.  
  6.  
  7. echo $text; // wypiszę skrócony z "..." lub pełnej długości


Dodatkowo powiem, że przy zabawami z utf-8 itp żeby nie ucinało Ci lterek w połowie używaj funkcji multibajtowych z prefixem "mb_" czyli mb_strlen i mb_substr.

Funkcja subtr przyjmuje 3 argumenty
1. To tekst który chcesz poddać skracaniu
2. pozycja litery w tekście od której cchesz zacząć wycinanie - 0 - pierwsza
3. ile znaków ma wyciąć

Czyli substr($text,0,50) wytnie 50 znaków od 0-ego.
oczko991
  1. <?php
  2. $q = mysql_query("SELECT * FROM `mp3` WHERE `url` IS NOT NULL ORDER BY RAND() LIMIT 6");
  3. while($row = mysql_fetch_assoc($q))
  4. $dupa= '<a href="mp3/'.$row['id'].'/'.url($row['title']).'/">'.stripslashes($row['title']).'</a>'
  5. echo substr($dupa,0,5);
  6. ?>


=


Cytat
Parse error: syntax error, unexpected T_ECHO
Sephirus
Średnik Panie! Średnik (4 linijka) smile.gif
oczko991
Działa, ale wyświetla pustą zawartość. Podam jeszcze oryginalną zawartość php, może coś źle przerobiłem.


  1. <?php
  2. $q = mysql_query("SELECT * FROM `mp3` WHERE `url` IS NOT NULL ORDER BY RAND() LIMIT 6");
  3. while($row = mysql_fetch_assoc($q))
  4. echo '<a href="mp3/'.$row['id'].'/'.url($row['title']).'/">'.stripslashes($row['title']).'</a>';
  5. ?>


A tutaj przeróbka:

  1. <?php
  2. $q = mysql_query("SELECT * FROM `mp3` WHERE `url` IS NOT NULL ORDER BY RAND() LIMIT 6");
  3. while($row = mysql_fetch_assoc($q))
  4. $qrwa = '<a href="mp3/'.$row['id'].'/'.url($row['title']).'/">'.stripslashes($row['title']).'</a>';
  5. echo substr($qrwa,0,9);
  6. ?>
Sephirus
Ok trochę zaszalałeś smile.gif Nie możesz skracać całych tagów HTML smile.gif tylko tytuł - zamień to na:

  1. <?php
  2. $q = mysql_query("SELECT * FROM `mp3` WHERE `url` IS NOT NULL ORDER BY RAND() LIMIT 6");
  3. while($row = mysql_fetch_assoc($q))
  4. echo '<a href="mp3/'.$row['id'].'/'.url($row['title']).'/">'. substr(stripslashes($row['title']),0,9).'</a>';
  5. ?>


oczko991
Yea! Działa ;-) SUper, Dzięki Panie!
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.