Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Strings kürzen? [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Strings kürzen?


 
DukeNude
14-10-2002, 21:49 
 
also, ich stehe da jetzt schon wieder voll an, weil ich die Regex einfach nicht begreife; ich bräuchte was, das mir folgendes macht:

$text=preg_replace(alle Zeichenfolgen zwischen 2 Leerzeichen bzw Leerzeichen und <br>'s, die länger als 100 Zeichen sind,mit den ersten 97 Zeichen + "...",$text)

bitte um Hilfe, bin der totale Nix-Checker

 
MelloPie
14-10-2002, 22:08 
 
Schau Dir mal die Funktionen
substr() und strpos() an
damit kannste Dir das basteln

 
DukeNude
15-10-2002, 07:28 
 
klar aber wie prüfe ich die einzelnen Wörter vom ganzen Text?

 
yezariel
15-10-2002, 09:41 
 
Probier's mal so:



// Text kürzen auf x Character
// ---------------------------
function text_cut($text,$len){
if(strlen($text)<$len) $len=strlen($text);
$neu=substr($text,0,$len);
$stop=false;
$pos=$len-1;
while($stop==false){
$c=substr($neu,$pos,1);
if($c!=" "){
$neu=substr($neu,0,$pos);
$pos-=1;
}else{
$stop=true;
};
if($pos==0){
$stop=true;
$neu=$text;
};
};
return $neu;
};



Funktion dann mit

$kurztext = text_cut($langer_text,$textlänge);

aufrufen.

Ist vielleicht nicht die schönste Lösung, aber das sollte funktionieren.

Gruss

Bernd

 
BielWeb
15-10-2002, 10:43 
 
Noch eine Lösung:

$preg = "((?U)((\040)((.){97})((.){4})(.*)((<br>)|\040)))";
$text = preg_replace("/$preg/","\\4..........\\9",$text);
Hinweis: In der Zeile preg_replace gehören vor der 4 und 9 zwei Backslash, das Forum klaut eins.
Hinter dem <br> kein Leerzeichen.
Vor der 40 gehört ein \0

Das Forum klaut alles......

Vielleicht geht es so:
$preg = "((?U)((\040)((.){97})((.){4})(.*)((<br>)|\040)))";
$text = preg_replace("/$preg/","\\4..........\\9",$text);

Nach dem <br> kein Leerzeichen.

 
DukeNude
15-10-2002, 14:16 
 
das funktioniert ja schon fast perfekt!!! Nur am String-Anfang bzw Ende wills noch nicht so recht...

 
BielWeb
15-10-2002, 14:28 
 
Hi,

ich weß nicht ob Du mich oder yezariel gemeint hast. Wenn Du mich meinst, was klappt nicht so wie Du es habe möchtest?

 
DukeNude
15-10-2002, 15:02 
 
jop sorry, meinte dich... mit der variante läßt sich noch zb "blablabalbalbalbablbalabla.usw." posten

habs ausgetrickst ;):

$text = " $text ";
dann dein Teil
return trim($text); und funzt! Nur kürzt es auch die Hyperlinks :(

 
BielWeb
15-10-2002, 16:50 
 
Hi,

Deine Frage war$text=preg_replace(alle Zeichenfolgen zwischen 2 Leerzeichen bzw Leerzeichen und <br>'s, die länger als 100 Zeichen sind,mit den ersten 97 Zeichen + "...",$text) Wie Du richtig erkannt hast kürzt meine Version nicht bei "blablablablablablablabla usw., da ja dort keine Leerzeichen oder ein Zeilenumbruch ist.

Um evtl. tags zu entfernen, könnte man das noch hinzufügen
$preg = "((?U)(.*)(<)(.*)(..........))";
$text = preg_replace("/$preg/","\\2..",$text);
Der Text wird dann weiter gekürzt.
( Hinter dem < in der ersten Zeile kein Leerzeichen.)

 
DukeNude
15-10-2002, 18:24 
 
hmm also wie sollte das Ding dann aussehen, wenn man alles was (url......)(/url) und (img)...(/img) (mit eckigen Klammern) nicht abschneiden soll?

 
DukeNude
15-10-2002, 18:31 
 
wie funktioniert das hier eigentlich:

testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest testtesttesttesttesttesttesttesttesttesttest

aha, da werden br's hinzugefügt

 
DukeNude
16-10-2002, 11:23 
 
hab noch immer keine Lösung gefunden... wie schließe ich bestimmte zeichenketten aus?


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:58 Uhr.