alternatief voor substr()

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Martijn

martijn

27/02/2009 20:50:00
Quote Anchor link
Hey,

Ik werk al een tijdje met nieuwssysteempjes links en rechts die ik dan zelf programmeer, vaak zijn die zo dat ik het bovenste stuk van een artikel afkap en als previewtekstje gebruik. Alleen nu is er een probleem. Veel mensen die mijn systeem gebruiken kopieren en plakken klakkeloos teksten van internet, en plakken die in de texteditor (tinyMCE) daar komen dan allemaal HTML codes van de betreffende site tussen te staan die door mijn subsrt() afgehakt word, wat een pagina vol errors opleverd.

Is er een manier om stukken tekst af te breken niet per teken, maar bijvoorbeeld per woord, of die de html tags ontziet.

Hoop dat iemand me kan helpen hiermee.

grtz
 
PHP hulp

PHP hulp

25/12/2024 02:19:36
 
Martijn

martijn

02/03/2009 17:03:00
Quote Anchor link
bump. loopt niemand anders hier tegenaan?
 
Midas

Midas

02/03/2009 17:08:00
 
Jesper Diovo

Jesper Diovo

02/03/2009 17:48:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
function subwords($string, $start, $length) {
    if(empty($string) || !is_numeric($start) || !is_numeric($length)) {
        return false;
    }

    
    $aWords = explode(" ", $string);
    
    $sResult = '';
    $iTeller = 0;
    foreach($aWords as $sWord) {
        if($iTeller >= $start && $iTeller <= ($start+$length)) $sResult .= $sWord.' ';
        $iTeller++;
    }

    
    return $sResult;
}

?>


Die werkt hetzelfde als substr(), en kapt als het goed is per woord af.
 
Eddy E

Eddy E

02/03/2009 17:53:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$string
= "Ik wil alleen de eerste zes woorden zien van deze zin";
$woorden = str_word_count($string, 2);
$woorden = array_slice($woorden, 0, 6);
echo implode(" ", $woorden);
?>


Lekker creatief, maar werkt (denk ik) wel.
Ongetest, maar het idee zal wel werken.

Mieter dit gewoon in een nieuwe functie en klaar:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
function substr_words($input, $count_words = 10, $offset = 0)
 {

 $woorden = str_word_count($input, $count_words);
 $woorden = array_slice($woorden, $offset, 6);
 return implode(" ", $woorden);
 }


$string = 'Dit is een lange zin met onzin en nog meer woorden ';
echo substr_words($string); // 10 woorden
echo substr_words($string, 6); // 6 woorden
?>
Gewijzigd op 01/01/1970 01:00:00 door Eddy E
 
Martijn

martijn

17/03/2009 02:43:00
Quote Anchor link
oke thx allemaal, de versis van eddy ga ik ook nog even kijken, ziet er erg mooi uit, bedankt!

nog 1 ding, ik gebruik nu substr en striptags op deze manier:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
.strip_tags(substr($row['content'],0,300)).


1 probleem, hij lijkt nu eerst de letters te tellen, en dan pas de tags te strippen. Wat resulteerd in alsnog nogal korte zinnen.
 
Ivar

ivar

17/03/2009 08:01:00
Quote Anchor link
Quote:
1 probleem, hij lijkt nu eerst de letters te tellen, en dan pas de tags te strippen. Wat resulteerd in alsnog nogal korte zinnen.


ik zou dan dit doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
.substr(strip_tags($row['content']),0,300).
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.