View previous topic :: View next topic |
Author |
Message |
Zeus
Joined: 09 Sep 2003 Posts: 775 Location: Čakovec
|
Posted: 28.10.2008 21:23 Post subject: Funkcija, ogranicenje znakova |
|
|
Ovako, imam ovo:
Code: | <?php nekaFunkcija(); ?> |
Ovo daje neki tekst, npr. JEDAN DVA TRI CETIRI
Ja bih htio ovo ograniciti na recimo 12 znakova i da na kraju doda tri tocke.
Rezultat bi morao biti ovaj:
JEDAN DVA TR...
Da li se moze to zadati tu kod tog <?php ?>
Last edited by Zeus on 29.10.2008 14:24; edited 1 time in total |
|
|
Back to top |
|
|
PaNtHeR
Joined: 17 Sep 2003 Posts: 161
|
Posted: 28.10.2008 22:54 Post subject: |
|
|
Code: | function short_chars ($string, $n) {
$duzina = mb_strlen($string);
$ret = mb_substr($string,0,$n);
if ($duzina>$n) {$ret .= '...';}
return $ret;
}
function short_words ($string, $n) {
$words = explode(" ", $string);
for ($i=0;$i<$n;$i++) {
$ret .= $words[$i];
$ret .= ' ';
}
$ret .= '...';
return $ret;
}
function short_sentence ($string, $n) {
$words = explode(".", $string);
for ($i=0;$i<$n-1;$i++) {
$ret .= $words[$i];
$ret .= '.';
}
$ret .= '...';
return $ret;
} |
Ja koristim ove tri, jedna gleda samo znakove, druga riječi a treća rečenice, ali samo gleda točku.
Pripazi samo ako režeš html kod, može ti se desit da ti sreže usred taga, a to ne želiš, ali ove moje funkcije to ne gledaju... |
_________________ • |
|
Back to top |
|
|
PaNtHeR
Joined: 17 Sep 2003 Posts: 161
|
Posted: 28.10.2008 22:56 Post subject: |
|
|
Code: | function html_truncate($text, $max, $ending = '...') {
$max = $max - mb_strlen($ending);
$done = false;
$entity = false;
$tag = false;
$out = "";
$outCnt = 0;
$textCnt = mb_strlen($text);
for ($i = 0; $i < $textCnt; $i++) {
if ($entity) {
if (!$done) $out .= $text[$i];
if ($text[$i] == ';') $entity = false;
} else if ($tag) {
$out .= $text[$i];
if ($text[$i] == '>') $tag = false;
} else {
switch ($text[$i]) {
case '<': $tag = true; $out .= $text[$i]; break;
case '&': $entity = true; /*break;*/
default:
if (!$done)
if ($outCnt < $max) {
$out .= $text[$i];
$outCnt++;
} else {
$done = true;
$out .= $ending;
return $out;
}
}
}
}
} |
Evo ova je HTML safe... nisam ju ja napisao, uzeo sam negdje...
Sretno! |
_________________ • |
|
Back to top |
|
|
Zeus
Joined: 09 Sep 2003 Posts: 775 Location: Čakovec
|
Posted: 28.10.2008 23:09 Post subject: |
|
|
Ali ne znam gdje ugurati sad tu funkciju, jer pozadina funkcije je dosta velika, a to sto sam naveo daje samo rezultat svega. Dakle to <?php ?> treba uklopiti u ovo hvala na trudu, pokusavam nesto |
|
|
Back to top |
|
|
maratz mi3.crew
Joined: 24 Nov 2003 Posts: 1207 Location: ZAG
|
Posted: 29.10.2008 08:12 Post subject: |
|
|
Nisam baš neki programer, ali provjeri prvo da li nekaFunkcija vraća string ili ispisuje string,
ako vraća string, onda ga spremiš u varijablu i izmanipuliraš navedenim funkcijama, ako
ispisuje, promjeni da vraća :)
Code: | function vracam() {
return 'bla';
}
function ispisujem() {
echo 'bla';
}
|
|
_________________ STOP HITTING YOURSELF! | NETIQUETTE | TYPETESTER | Hypertext rulez™ | CREATIVE NIGHTS | ACCOMMODATIONS |
|
Back to top |
|
|
PaNtHeR
Joined: 17 Sep 2003 Posts: 161
|
Posted: 29.10.2008 08:29 Post subject: |
|
|
aha, sorry..
dakle jednu od ovih funkcija staviš negdje u kod, prije nego ju želiš koristiti, i onda
Code: | <?php
html_truncate (nekaFunkcija(), 12);
?> |
ili:
Code: | <?php
$tekst = nekaFunkcija();
html_truncate ($tekst, 12);
?> |
kuiš?
heh. sad opet ima catch...
nekaFunkcija(); ti mora vratit string pomoću return na kraju, ako u toj funkciji nemaš na kraju vraćanje rezultata sa return nego ona odmah radi echo, e onda ćeš ju morati malo prepraviti... ako hoćeš postaj ju tu pa ćemo ti pomoći.
edit: Maratz to već reče ali ja još dodatno pojsanih |
_________________ • |
|
Back to top |
|
|
Zeus
Joined: 09 Sep 2003 Posts: 775 Location: Čakovec
|
Posted: 29.10.2008 12:00 Post subject: |
|
|
Ne mogu natjerati da to radi... ovo je ta funkcija:
Code: | function mosPathWay() {
global $mosConfig_absolute_path;
$Itemid = intval( mosGetParam( $_REQUEST, 'Itemid', '' ) );
require_once ( $mosConfig_absolute_path . '/includes/pathway.php' );
}
|
|
|
|
Back to top |
|
|
PaNtHeR
Joined: 17 Sep 2003 Posts: 161
|
Posted: 29.10.2008 12:11 Post subject: |
|
|
Uh taj Mambo... zašto je sve tako komplicirano u tom CMS-u??
Code: | require_once ( $mosConfig_absolute_path . '/includes/pathway.php' ); |
ova linija ti poziva neki eksterni fajl u kome se odradi ispis toga što ti želiš skratiti, a u tom fajlu može biti 5 linija koda ili 55.555, tako da ti mogu samo jedan WILD WILD guess dati:
Code: | <?php
function callback($buffer) {
return html_truncate ($buffer, 12);
}
ob_start("callback");
require_once ( $mosConfig_absolute_path . '/includes/pathway.php' );
ob_end_flush();
?> |
Ovo funkcionira tako da sav output prema browseru pošalje nekoj funckiji, u ovom slučaju callback koja ga onda odvrti i vrati browseru... Nikad ovako nešto nisam koristio, ali moglo bi radit. |
_________________ • |
|
Back to top |
|
|
Zeus
Joined: 09 Sep 2003 Posts: 775 Location: Čakovec
|
Posted: 29.10.2008 13:11 Post subject: |
|
|
Kad bi ja sad znao ovo ukomponirati u code Kamo ovaj dio ide sto si ti izmjenio? Hehe...
Ma nego, uspio sam naci konkretno rjesenje za Joomlu, gdje oni to rade sa:
Code: | text-overflow: ellipsis; |
I jos par linija koda, ali ovo je interesantno: opet problem, jer ellipsis firefox naravno ne podrzava, pokusavam sa raznima hackovima kao sto je ovaj:
http://www.hedgerwow.com/360/dhtml/text_overflow/demo.php
Ali ne mogu to slozit kak spada da radi u firefoxu. Da li se netko igrao s time ili zna kak bi to islo?[/code] |
|
|
Back to top |
|
|
|