Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] dzielenie stringa
budzyk
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 20.09.2005

Ostrzeżenie: (0%)
-----


potrzebuje funkcji, ktora dzieli długi string na mniejsze cześci, oddzielajac je spacjami,

chodzi o to, ze mam na swojje stronie komentarze, i nie chec, żeby wsyztsko mi sie rozjeżdżało, jeśli jakiś imbecyl wpisze sto piećdziesiat wykrzykników nie rozdzielajac ich spacją.
najbardzije mi zalezy an fukcji, która pobierała by cały komentarz, analizowała każdy z jego wyrazów, i jesli jakiś jest dłuższy od powiedzmy 40 znaków, to wstawia w środek spacje. nie mam kompletnie pomysłu, jak sie do tego zabrać...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
wipo
post
Post #2





Grupa: Zarejestrowani
Postów: 856
Pomógł: 19
Dołączył: 30.08.2005
Skąd: 100lica

Ostrzeżenie: (0%)
-----


A takie cos nie pomoże
Kod
$komentarz="fsdfsdfsdfsdf fsdfsdfsdfsdf fsdfdsf";
$komentarz=explode(" ",$komentarz);
for($x=0;$x<count($komenarz);$x++){
   if (strlen($komentarz[$x])>40) $komentarz[$x]=substr($komentarz[$x],0,40);
   print $komenarz[$x]." ";
}


Ten post edytował wipo 29.09.2006, 10:43:05


--------------------
Go to the top of the page
+Quote Post
myth
post
Post #3





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 25.09.2006

Ostrzeżenie: (0%)
-----


Chyba mozna prosciej:
wordwrap

  1. <?php
  2. $string="To jest bardzo dlugi text !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    !!!!!!!!!!!!!!!!!!"
    ;
  3.  
  4. echo wordwrap($string, 10, " ", 1);
  5.  
  6. # Wyswietli: 
  7. # To jest bardzo dlugi text !!!!!!!!!! !!!!!!!!!! !!!!!!!!!! !!!!!!!!!! !!!!!!!!
    !! !!!!!!!!!! !!!!!!!
  8. ?>


Ten post edytował myth 29.09.2006, 10:56:00
Go to the top of the page
+Quote Post
Luciano
post
Post #4





Grupa: Zarejestrowani
Postów: 102
Pomógł: 1
Dołączył: 26.07.2006
Skąd: Londyn

Ostrzeżenie: (0%)
-----


Polecam ci dwie z moich ulubionych funkcji explode" title="Zobacz w manualu php" target="_manual oraz implode" title="Zobacz w manualu php" target="_manual
explode stworzy ci ze stringa tablice "lamiac" go w odpowiednich miejsach np. spacji
pozniej petelka sprawdzajaca dlugosc kazdego z wyrazow i wsio biggrin.gif


--------------------
Go to the top of the page
+Quote Post
budzyk
post
Post #5





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 20.09.2005

Ostrzeżenie: (0%)
-----


ok, teraz doszedł mi problem taki, że chciałbym, jak user napisze adtres strony, w stylu www.wp.pl, to zeby system wyswietlal to jako napis 'LINK', ktory mozna kliknac, i on przenosi na dana strone. napisałem fukcje


Kod
<?php

function DzielString($string) {


$string = strip_tags($string);

$table = explode(" ", $string);

$count = count($table);
for ($i=0; $i<=$count; $i++) {
    if (ereg ("www.", $table[$i])) { $table[$i] = '<a href=http://' .$table[$i] .' target=_blank>link</a>';
    } elseif (ereg ("http://", $table[$i])) { $table[$i] = '<a href=' .$table[$i] .' target=_blank>link</a>';
    
    } else     {

    $table[$i] = wordwrap($table[$i], 35, ' ', 1);

    }

}

$string = implode(" ", $table);

$string = addslashes($string);
        
        return $string;

}
?>


i wszystko by było cacy, ale problemy pojawiaja sie, jak w okolicach linku pojawia sie znak nowej linkii. zalezy mi na tym, aby znaki nowej linii zostały, wiec nie moge po porstu ich skasować.

przyklad:

gdy user wpisze:
bleble www.wp.pl
bleble

powinno wyskoczyc:
bleble link
bleble

w czym link klikalny.

a wyskakuje:

bleble bleble target=_blank>link

i prowadzi do strony 'http://www.wp.pl<br/'

jak pozbyś sie znakow nowej linii tylko w okolicach linku?

Ten post edytował budzyk 30.09.2006, 11:18:52
Go to the top of the page
+Quote Post
myth
post
Post #6





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 25.09.2006

Ostrzeżenie: (0%)
-----


Po co przelatujesz po kazdym wyrazie osobno?

1. do wordwrap'a wsadz caly string
2. do zamiany linka zastosuj preg_replace
Go to the top of the page
+Quote Post
budzyk
post
Post #7





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 20.09.2005

Ostrzeżenie: (0%)
-----


tak, tylko wtedy jak uzytkownik poda linka
dłuższego niż 35 znaków, to wordwrap go podzieli.
Go to the top of the page
+Quote Post
wipo
post
Post #8





Grupa: Zarejestrowani
Postów: 856
Pomógł: 19
Dołączył: 30.08.2005
Skąd: 100lica

Ostrzeżenie: (0%)
-----


To walidator linków proponuje zrobić
Albo zakazać wstawiania linków i je wyrzucać z formularza


--------------------
Go to the top of the page
+Quote Post
budzyk
post
Post #9





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 20.09.2005

Ostrzeżenie: (0%)
-----


z wyrzucaniem nie było by porblemu, ale chodzi mi właśnie o to, zeby były, nawet jak beda wadliwe, to nie przeszkadza, jesli zamieniaja sie na wyraz LINK. istnieją linki które mają wiecej niż 35 znaków, wiec chodzi mi głównie o to, jak pozbyć się tych znaków końca linii.
Go to the top of the page
+Quote Post
wipo
post
Post #10





Grupa: Zarejestrowani
Postów: 856
Pomógł: 19
Dołączył: 30.08.2005
Skąd: 100lica

Ostrzeżenie: (0%)
-----


No to przed wordwrapem zamień znalezione linki na jakieś zmienne np !LINK1! następnie podziel string a pożniej zamień zmienne !LINK1! na właściwe linki.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 18:01