Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Dzielenie String do tablicy o określonej ilości znaków
nappy
post
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 22.09.2009

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


Cześć, nie wiem jak się za takie coś zabrać:

Potrzebuje po pobraniu konkretnego tekstu (np 1500znaków ale będzie to zmienna liczba) podzielić go na 2 nierówne części. Np pierwsza ma 300znaków a druga - reszte. Czyli coś na kształt explode(); która nie dzieli po określonym separatorze a określonej ilości znaków...

Zawsze można podzielić na równe części i wszystkie prócz pierwszej potraktować implode(); tylko kurcze nie wiem jak rozwiązać samo dzielenie tekstu. Byłbym wdzięczny za każde info, nie oczekuje gotowca - ucze się i chętnie poczytam 'wskazówki' (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nappy
post
Post #2





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 22.09.2009

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


Ok (dzięki Waszej pomocy) rozwiązałem swój problem, poniżej kod dla potomnych. Może komuś się przyda. Przy okazji byłbym wdzięczny gdyby ktoś to sprawdził/napisał co można było zrobić inaczej etc. Jakieś uwagi (IMG:style_emoticons/default/smile.gif)

--

Całość wrzucamy do pliku functions.php w głównym katalogu naszego theme'a. (wp includuje ten plik automatycznie).

Co to robi?

Dzieli nam tekst (cały, bez tagów <p>,<span> itp - czysty tekst) na 2 części. Pierwsza (excerpt) wyświetla fragment tekstu od początku do (domyślnie) 600 znaku. Skrypt wyszukuje pierwszą kropke/wykrzyknik/znak zapytania/średnik i dopiero po nim ucina tekst. Więc problem ucinania słowa/zdania w środku odpada.

Plusy wiadome, możemy osobno wywoływać/formatować wstęp/tekst, działać na nim z jQuery, nie ma żadnych tagów-śmieci z WP.

Wywołanie:
Kod
show_post(); // wyświetli wstęp, domyślnie 600 znaków
show_post(content, 666); // wyświetli część tekstu zaczynając od 666 znaku.


Więc jeśli chcemy wyświetlić cały tekst w ciągu od np 700 znaku to wpisujemy:

Kod
show_post(excerpt, 700); //pierwszy parametr nie jest wymagany
show_post(content, 700); //wyświetli reszte tekstu




Kod
    function cut_off($lookfor, $lenght) {
    
    global $more;
    $more = 1;
    $whole_content = get_the_content();
    $cutoff_pos = strpos($whole_content, $lookfor, $lenght);    
    return $cutoff_pos;
    }
    


    function show_post($select = "excerpt", $excerpt_lenght = "600") {
    global $more;
    $more = 1;
    $whole_content = get_the_content();
                
        $whole_content_lenght = strlen($whole_content);
        
        if ($excerpt_lenght<$whole_content_lenght)
        {
            $punctation[0] = cut_off('.',"$excerpt_lenght");
            $punctation[1] = cut_off('!',"$excerpt_lenght");
            $punctation[2] = cut_off('?',"$excerpt_lenght");
            $punctation[3] = cut_off(';',"$excerpt_lenght");
            
            $i = 0;
            foreach($punctation as $pointer) {
                
                if(empty($pointer) === FALSE) {
                    $true[$i] = $pointer;
                }

                $i++;
            }
                                    
            $nearest_pointer = min($true);
            $nearest_pointer = $nearest_pointer+1;
            
            
            $text[excerpt] = substr($whole_content, 0, $nearest_pointer);
            $text[content] = substr($whole_content, $nearest_pointer);
            
            echo $text[$select];
            
        }
        else
        {
            echo "$whole_content";
        }
    }

Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 14.10.2025 - 04:21