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)
Lange Zeilen kürzen [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Lange Zeilen kürzen


 
sk4r
24-04-2006, 17:51 
 
Hi Leute
Ich hab seit einigen Tagen das Problem, dass in meinem Script einfach die langen Zeilen nicht abgeschnitten und in die nächste Zeile gesetzt werden. Hab schon einige Möglichkeiten ausprobiert. Damit ihr mit dem Script klar kommt, habe ich alle Zeilenumbruchversuche rausgenommen.

componen.profil.php


<?php
function getuserid($nickname) {
$DB = new DB;
$query = "SELECT userid FROM ".DBTABLEPRETEXT."mitglieder WHERE nickname='$nickname';";
$res = $DB->query($query);
$fetch = mysql_fetch_array($res);
return $fetch['userid'];
}
function listdetails($userid) {
$DB = new DB;
$query = "SELECT userid, nickname, email, geschlecht, single, suchegeschlecht, suchefuer, musik,
geburtstag, groesse, gewicht, augenfarbe, haarfarbe, figur, plz, ort, beruf,

motto, vorlieben, abneigungen, traumpartner, /* Evtl. relevant */

signatur, bild, anmeldedatum, gesperrt, ((YEAR(CURRENT_DATE)- YEAR(geburtstag))-

(RIGHT(CURRENT_DATE,5)<RIGHT(geburtstag,5))) as age, showbirthday, forenpunkte,
refpunkte FROM ".DBTABLEPRETEXT."mitglieder WHERE userid='$userid';";
$res = $DB->query($query);
$fetch = mysql_fetch_array($res);
return $fetch;
}
}
// Benutzerdaten aktualisieren
$query = "UPDATE ".DBTABLEPRETEXT."mitglieder SET ".
"single='".$_POST['single']."', ".
"suchegeschlecht='".$_POST['suchegeschlecht']."', ".
"suchefuer='".$_POST['fuerzum']."', ".
"musik='".$_POST['musik']."', ".
"groesse='".$_POST['groesse']."', ".
"gewicht='".$_POST['gewicht']."', ".
"augenfarbe='".$_POST['augenfarbe']."', ".
"haarfarbe='".$_POST['haarfarbe']."', ".
"figur='".$_POST['figur']."', ".
"plz='".$_POST['plz']."', ".
"ort='".$_POST['ort']."', ".
"beruf='".$_POST['beruf']."', ".
"motto='".$_POST['motto']."', ". /* Evtl. relevant */
"vorlieben='".$_POST['vorlieben']."', ". /* Evtl. relevant */
"abneigungen='".$_POST['abneigungen']."', ". /* Evtl. relevant */
"traumpartner='".$_POST['traumpartner']."', ". /* Evtl. relevant */
"showbirthday='". (isset($_POST['birth_display'])?"1":"0") ."', ".
"homepage='". $_POST['homepage']."', ".
"signatur='".$_POST['signatur']."' ".
$newpass . " " .
"WHERE userid='$userid';";

/*...................................................................................
Hier hab ich was ausgelassen
...................................................................................*/

<td class="profil_detail"><?php echo

str_replace("\n", "<br>", $this->Emotions->PrepareText($this->details['motto'])); ?>
</td>
</tr> /* Ausgabe --> Motto */
<tr valign="top">
<td class="profil_bezeichnung">
<?php echo PRO_VIEWWHATILIKE;?>:
</td>
<td class="profil_detail"><?php echo

str_replace("\n", "<br>", $this->Emotions->PrepareText($this->details['vorlieben']));?> </td>
/* Ausgabe --> Vorlieben */
<td class="profil_bezeichnung">
<?php echo PRO_VIEWWHATIHATE;?>:
</td>
<td class="profil_detail"><?php echo

str_replace("\n", "<br>", $this->Emotions->PrepareText($this->details['abneigungen']));?>

</td> /* Ausgabe --> Abneigungen */
</tr>
<tr valign="top">
<td class="profil_bezeichnung" col>
<?php echo PRO_VIEWDREAM;?>:
</td>
<td class="profil_detail" colspan="3"><?php echo

str_replace("\n", "<br>", $this->Emotions->PrepareText($this->details['traumpartner'])); ?>

</td> /* Ausgabe --> Traumpartner */
</tr>

<tr valign="top">
<td class="profil_bezeichnung" col>
<?php echo PRO_VIEWHOMEPAGE;?>:
</td>
<td class="profil_detail" colspan="3"><?php echo

str_replace("\n", "<br>", $this->Emotions->PrepareText($this->details['homepage'])); ?>

</td>
</tr>
</td>
</tr>
<tr>
<td colspan="4" align="center">



Alles was als Ausgabe kommentiert ist, stellt die Zeilen dar, die man meiner Meinung nach ändern sollte, aber wie ist mir ein Rätsel.

Ich hoffe, ihr könnt mir helfen. Danke

 
jahlives
24-04-2006, 18:02 
 
1. Brich bitte deinen Code um !

Wenn du diese Ausgabe meinst dann probiers doch so...

<?php
echo nl2br($this->Emotions->PrepareText($this->details['motto']));
?>

Gruss

tobi

p.s. Wenn du im String aber keine Zeilenumbrüche drinn hast, dann könnte ggf chunk_split() etwas für Dich sein.

 
sk4r
24-04-2006, 18:08 
 
Hi,

gibt nur Fehler, weil "str_replace" drin sein MUSS!

ps: es muss nach etwa 55-57 Zeichen in die neue Zeile springen

 
jahlives
24-04-2006, 18:13 
 
gibt nur Fehler, das "str_replace" drin sein MUSS!

Diese Fehlermeldung möchte ich sehen.

 
sk4r
24-04-2006, 18:15 
 
Warning: Wrong parameter count for nl2br() in /mnt/ja1/07/770/00000018/htdocs/fl/components/component.profil.inc.php on line 1312

 
sk4r
24-04-2006, 19:26 
 
Hmm hat wirklich niemand ne Antwort auf meine Frage?

ps: danke für deine Antwort jahlives

 
Abraxax
24-04-2006, 19:36 
 
Original geschrieben von jahlives
1. Brich bitte deinen Code um ! :teach:

 
sk4r
24-04-2006, 20:47 
 
Original geschrieben von Abraxax
:teach:

wenn ich wüsste, was ihr damit meint, würde ich das auch tun

 
wahsaga
24-04-2006, 20:49 
 
http://www.php-resource.de/forum/showthread.php?s=&threadid=50454

 
sk4r
24-04-2006, 21:00 
 
Original geschrieben von wahsaga
http://www.php-resource.de/forum/showthread.php?s=&threadid=50454

ich entschuldige mich vielmals..
hab eben gemerkt, dass ich etwas neben der kappe war.. hab sogar die regeln gelesen. hab den code im texteditor bearbeitet und hirnlos hier gepostet..

 
jahlives
25-04-2006, 12:30 
 
Wrong parameter count for nl2br() in /mnt/ja1/07/770/00000018/htdocs/fl/components/component.profil.inc.php on line 1312

Diese Meldung heisst aber nicht wie oben von dir behauptet das sei "weil "str_replace" drin sein MUSS!"
Es heisst nur dass du mehr oder weniger Parameter an die Fkt übergibst, als sie erwartet.
Zur Problemlösung würde ich dir das Manual zum Thema wärmstens ans Herz legen. Dann beantworte mir die folgende Frage: Wieviele Parameter nimmt denn nl2br() ?
Wenn du das raus hast, dann gehst du zu obiger Fehlerzeile in deinem Code und schaust wieviele Parameter du übergeben willst. Dann korrigierst du das und wir schauen weiter...

Gruss

tobi

 
sk4r
25-04-2006, 18:30 
 
Ich mag zwar kein Frage-Antwort-Spiel aber nu gut. Bin auch kein Kind. Bin schon etwas älter, wenn es so gedacht sein sollte. Naja wie auch immer.

Es werden 2 Parameter benötigt.

Wrong parameter count for nl2br() in /mnt/ja1/07/770/00000018/htdocs/fl/components/component.profil.inc.php on line 1312

Das hier wird wohl heißen, dass ich nur einen Parameter übergeben habe. Da es auf php.net sehr unübersichtlich dargestellt ist, lässt sich nicht exakt herauslesen, welche beiden "strings" übergeben werden müssen. Ich glaube nämlich icht, dass der anzuzeigende Text 2 mal als "string"-Wert benötigt wird.

Gruß
sk4r

 
Abraxax
25-04-2006, 21:06 
 
Original geschrieben von sk4r
Es werden 2 Parameter benötigt. falsch! es wird genau ein parameter benötigt. die variable string, welche benötigt wird, ist vom typ string.

was übergibst du denn wie an nl2br() ?

 
wahsaga
25-04-2006, 21:12 
 
Original geschrieben von sk4r
Da es auf php.net sehr unübersichtlich dargestellt ist, lässt sich nicht exakt herauslesen, welche beiden "strings" übergeben werden müssen. Ich glaube nämlich icht, dass der anzuzeigende Text 2 mal als "string"-Wert benötigt wird.
Ach, jetzt wird's langsam klar ...

Du liest das Manual offenbar falsch.

string nl2br ( string string )

Das bedeutet, dass die Funktion einen Parameter vom Typ string übergeben bekommen will - und dieser Parameter ist hier schlicht auch mit string benannt.
Und davor steht noch string, weil der Rückgabewert der Funktion ein String ist.

Da könnte ebenso gut stehen:
string nl2br ( string text )
oder
string nl2br ( string beispiel )

Wenn mehrere Parameter übergeben werden sollten, dann wären sie wie immer durch Kommata getrennt aufgeführt - und zwar in der gleichen Weise, immer zuerst der Typ des Parameters, und dann ein symbolischer Name.

Beispiel:

array FunktionXY ( string text, int zahl)

Würde für eine Funktion stehen, die zwei Parameter übergeben bekommt, einen vom Typ String mit dem Namen text, und einen vom Typ int mit dem Namen zahl.
Und der Rückgabewert wäre ein Array, deshalb der Typbezeichner array vor dem Funktionsnamen.


Jetzt klarer, wie man das Manual liest ...?


Die Namen bedeuten übrigens nicht, dass deine Parameter genauso heißen müssen - sie sind nur symbolischer Natur, damit man etwas hat, worauf sich weitere Erklärungen beziehen können ... nu, bevor das auch wieder falsch verstanden wird ;-)

 
sk4r
25-04-2006, 21:26 
 
Original geschrieben von wahsaga
string nl2br ( string string )

Das bedeutet, dass die Funktion einen Parameter vom Typ string übergeben bekommen will - und dieser Parameter ist hier schlicht auch mit string benannt.
Und davor steht noch string, weil der Rückgabewert der Funktion ein String ist.

Da könnte ebenso gut stehen:
string nl2br ( string text )
oder
string nl2br ( string beispiel )



Hallo wahsaga,
vielen Dank für die Aufklärung. Jetzt bin ich einen Schritt weiter.
Das Problem ist, dass ich einen Text, der durch den User im Profil eingetragen und in der Datenbank abgespeichert wird, auf dieser Seite ausgegeben wird und manche die Wörter ohne Trennzeichen schreiben. Scheint eine neue Krankheit zu sein. Wie auch immer soll dieser Text gekürzt werden.

Gruß
sk4r

 
wahsaga
25-04-2006, 21:28 
 
Nun, das könntest du bspw. mit der Funktion wordwrap() bewerkstelligen.

 
sk4r
25-04-2006, 22:18 
 
und wie sollte ich deiner meinung nach diese funktion einbauen? oder besser gesagt wo?

 
wahsaga
25-04-2006, 22:33 
 
Na das überlegst du dir vielleicht mal selber ...


Probiere es ruhig mit Beispieltexten aus, welches Ergebnis erreichst du, je nachdem wo du welche Funktion einsetzt, etc.

Und ein bisschen logisches Nachdenken, wo das wohl sinnvoll sein könnte, dürfte wohl auch helfen.

 
piep83
25-04-2006, 22:34 
 
hallo sk4r,

hab deine problemdarstellung nur kurz überflogen, hast du
schon strlen (http://www.php.net/manual/de/function.strlen.php) in verbindung mit substr (http://www.php.net/manual/de/function.substr.php) probiert?


@wahsaga - wordwrap() (http://www.heise.de/newsticker/result.xhtml?url=/newsticker/meldung/72330&words=PHP) (hoffe ich darf solch ein verweis setzen?)

 
wahsaga
25-04-2006, 22:38 
 
Original geschrieben von piep83
(hoffe ich darf solch ein verweis setzen?)
Wenn du meinst, er hat's noch nicht selbst gefunden, nachdem ich vor einer Stunde schon darauf hinwies ...

 
piep83
25-04-2006, 22:43 
 
(hoffe ich darf solch ein verweis setzen?)
bezog sich eigentlich auf den link zu heise. :rolleyes:


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:26 Uhr.