alternatief voor substr()
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
bump. loopt niemand anders hier tegenaan?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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;
}
?>
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.
Code (php)
1
2
3
4
5
6
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);
?>
$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)
1
2
3
4
5
6
7
8
9
10
11
12
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
?>
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
nog 1 ding, ik gebruik nu substr en striptags op deze manier:
1 probleem, hij lijkt nu eerst de letters te tellen, en dan pas de tags te strippen. Wat resulteerd in alsnog nogal korte zinnen.
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: