php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 19-12-2005, 17:28
artiweb
 Newbie
Links : Onlinestatus : artiweb ist offline
Registriert seit: Dec 2005
Beiträge: 3
artiweb ist zur Zeit noch ein unbeschriebenes Blatt
Question nl2br nicht im ganzen String

Hallo,

folgendes Problem:

Ich lese Daten aus einer Datenbank, und gebe diese in Artikelform auf einer Seite aus. Damit die Optik stimmt, verwende ich nl2br um die per Formular in die Datenbank eingepflegten Daten richtig zu formatieren.
Nun ergibt sich das Problem, das wenn bspw. Html Code dabei ist, dort auch Zeilenumbrüche mit <br> ersetzt werden, und somit die Darstellung arg leidet.

Frage: gibtes eine andere Funktion mit der ich das ganze umgehen kann?
Mit Zitat antworten
  #2 (permalink)  
Alt 19-12-2005, 18:03
MelloPie
 PHP Master
Links : Onlinestatus : MelloPie ist offline
Registriert seit: Jan 2002
Ort: Hessen
Beiträge: 4.380
MelloPie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ersetze doch erst alle html breaks mit einer neuen Zeile und dann nl2br
__________________
Beantworte nie Threads mit mehr als 15 followups...
Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25
Mit Zitat antworten
  #3 (permalink)  
Alt 19-12-2005, 18:09
artiweb
 Newbie
Links : Onlinestatus : artiweb ist offline
Registriert seit: Dec 2005
Beiträge: 3
artiweb ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das ist nicht das Problem. Wenn ich z.bsp. den HTML Code einer Tabelle ausgebe, sieht das dann so aus:

PHP-Code:
    <TD  width="8%">0,28</TD><br /> 
d.h., nl2br macht ja auch dort ein <br> rein.
Mit Zitat antworten
  #4 (permalink)  
Alt 19-12-2005, 18:10
OliOli
 Member
Links : Onlinestatus : OliOli ist offline
Registriert seit: May 2003
Beiträge: 367
OliOli ist zur Zeit noch ein unbeschriebenes Blatt
OliOli eine Nachricht über ICQ schicken
Standard

Zitat:
Original geschrieben von MelloPie
ersetze doch erst alle html breaks mit einer neuen Zeile und dann nl2br
ich glaube nicht, dass er das gemeint hat...

Wenn dein HTML code irgendwie durch bbcodes markiert ist, z.B.
HTML-Code:
dann dein code...
dann kannst du diese Teile doch einfach rausnehmen. bzw. per explode() alles vor und nach diesen Strings mit nl2br() bearbeiten.

/e: Sehe grad deine Antwort. Am besten funktioniert es, wenn du deinen HTML Code irgendwie kennzeichnest, beispielsweise, wie oben, durch
HTML-Code:
<html code... >
Mit Zitat antworten
  #5 (permalink)  
Alt 19-12-2005, 18:11
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

PHP-Code:
echo nl2br(htmlentities($deinString)); 
Mit Zitat antworten
  #6 (permalink)  
Alt 19-12-2005, 18:12
OliOli
 Member
Links : Onlinestatus : OliOli ist offline
Registriert seit: May 2003
Beiträge: 367
OliOli ist zur Zeit noch ein unbeschriebenes Blatt
OliOli eine Nachricht über ICQ schicken
Standard

Zitat:
Original geschrieben von asp2php
PHP-Code:
echo nl2br(htmlentities($deinString)); 
Nein, denn dann wird sein html code ja nicht mehr interpretiert.
Mit Zitat antworten
  #7 (permalink)  
Alt 19-12-2005, 18:15
artiweb
 Newbie
Links : Onlinestatus : artiweb ist offline
Registriert seit: Dec 2005
Beiträge: 3
artiweb ist zur Zeit noch ein unbeschriebenes Blatt
Standard

okay, danke für die schnelle Antwort, werde es mit explode versuchen!
Mit Zitat antworten
  #8 (permalink)  
Alt 19-12-2005, 18:15
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von OliOli
Nein, denn dann wird sein html code ja nicht mehr interpretiert.
IMHO er will die HTML-Code nicht ausführen, sondern als Element seiner Dokument behandeln
Mit Zitat antworten
  #9 (permalink)  
Alt 23-01-2009, 14:42
CarShaker
 Newbie
Links : Onlinestatus : CarShaker ist offline
Registriert seit: Aug 2002
Ort: Munich
Beiträge: 6
CarShaker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo Zusammen,

ich würde das Thema gerne noch einmal hoch holen, da ich auch dieses Problem habe. Genau so, wie beschrieben!

Mit explode() komme ich auch nicht wirklich weiter, da in den Texten aus der DB z.B. mehrere Tabellen vorkommen. Da werde ich mit explode nicht wirklich froh:

- nach "<table" exploden
- in jedem zweiten Element nach "</table" exploden
- dann das Ganze gemischt wieder zusammenstöpseln mit nl2br bzw. plain...

geht das nicht irgendwie einfacher?
__________________
*** Lebe jeden Tag, als wenn es Dein letzter wäre ***
Mit Zitat antworten
  #10 (permalink)  
Alt 23-01-2009, 19:25
php_fussel
 Newbie
Links : Onlinestatus : php_fussel ist offline
Registriert seit: Jan 2009
Beiträge: 120
php_fussel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Mmmmmh, wollte gerade eh mal etwas entspannen, meine Webseite raubt mit die letzten Nerven.
Vielleicht ist das ein Ansatz ... oder ich mach mich lächerlich ;-):

PHP-Code:
<?php
function entferneallezeilenumbruecheabernurausTabellen ($daten_aus_der_DB){

    
$die_hoffentlich_richtige_ausgabe '';
    
$input_string $daten_aus_der_DB// ...

    // alle Tabellen rausziehen und in Array speichern
    
$ausdruck '/<table.*table>/iU';
/* ... mit dem RegEx bin ich noch nicht ganz zufrieden .. [^ >]* am 
Ende vielleicht besser (sonst hört die Suche auf ...)*/

    
preg_match_all ($ausdruck$input_string$alle_tabellen_arrPREG_PATTERN_ORDER);

    
//aus dem String die Tabellen rausziehen und durch $ersatz ersetzen
    
$ersatz '_gutentagichbinderplatzhalter_';
    
$input_string preg_replace($ausdruck,$ersatz,$input_string);
//$ausdruck sollte hier passen so wie oben steht

    //jetzt kommt der wichtigste Teil
    
foreach($alle_tabellen_arr as $eine_tabelle_ausm_array){
      
$ausdruck    '/\r\n|\r|\n/';//Zeilenumbruch entfernen
      
$ersatz '';
      
$eine_tabelle_ohne_zeilenumbruchpreg_replace($ausdruck,$ersatz,$eine_tabelle_ausm_array);

    
$die_hoffentlich_richtige_ausgabe .=
    
preg_replace('_gutentagichbinderplatzhalter_'$eine_tabelle_ohne_zeilenumbruch,$input_string);
    }
    
    return 
nl2br ($die_hoffentlich_richtige_ausgabe); 
}

?>
... ungetestet!!!!!!!!!!!!!!

Gruß php_fusel

Geändert von php_fussel (24-01-2009 um 12:27 Uhr)
Mit Zitat antworten
  #11 (permalink)  
Alt 25-01-2009, 23:38
CarShaker
 Newbie
Links : Onlinestatus : CarShaker ist offline
Registriert seit: Aug 2002
Ort: Munich
Beiträge: 6
CarShaker ist zur Zeit noch ein unbeschriebenes Blatt
Smile

@php_fussel: Genau so! Aber anders! ;-)
Nein, im Ernst: "Eigentlich" wollte ich schon den Text aus der DB mit nl2br ausgeben, nur eben die Tabellen nicht, da ein "br" innerhalb der Tabellenstrunktur, Leerzeilen nach der Tabelle erzeugt.

Dein Vorschlag war super, hat mich auf den richtigen Weg gebracht. Ich habe das noch mal ein wenig umgebastelt:

PHP-Code:
function nl2br_woTables ($daten_aus_der_DB)
{
    
$input_string $daten_aus_der_DB;

    
$ausdruck '~<table.*/table>~isU';

    
preg_match_all ($ausdruck$input_string$alle_tabellen_arrPREG_PATTERN_ORDER);

    
$ersatz '_gtibdph_';
    
$input_string preg_replace($ausdruck,$ersatz,$input_string);
    
$input_string nl2br($input_string);
    
    
$anz count($alle_tabellen_arr[0]);
    for (
$i 0$i <= ($anz-1); $i++)
    {
        
$input_string 
        
preg_replace('/_gtibdph_/',$alle_tabellen_arr[0][$i],$input_string,1);
    }
    return(
$input_string);

Gruß, Car
__________________
*** Lebe jeden Tag, als wenn es Dein letzter wäre ***
Mit Zitat antworten
  #12 (permalink)  
Alt 26-01-2009, 07:57
minou
 Newbie
Links : Onlinestatus : minou ist offline
Registriert seit: May 2008
Beiträge: 27
minou ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo zusammen,

gelöscht...

Geändert von minou (29-01-2009 um 08:09 Uhr)
Mit Zitat antworten
  #13 (permalink)  
Alt 26-01-2009, 09:27
CarShaker
 Newbie
Links : Onlinestatus : CarShaker ist offline
Registriert seit: Aug 2002
Ort: Munich
Beiträge: 6
CarShaker ist zur Zeit noch ein unbeschriebenes Blatt
Post

Zitat:
Original geschrieben von minou
Hallo zusammen,

warum denn so umständlich, ....
... weils schxxxxe Aussieht. Z.B.

PHP-Code:
<?php

$tabellentext 
'
Hier steht meine Tabelle:
<table border="1" cellpadding="0" cellspacing="0">
<tr>
  <td>
      Hier steht der Tabellentext
      
      Es sind 3 Zeilen (eine davon leer).
  </td>
</tr>
</table>
Das war die erste Tabelle.
:-)
Hier kommt die zweite:
<table border="1" cellpadding="0" cellspacing="0">
<tr>
  <td>
      Das ist jetzt die zweite Tabelle!
  </td>
  <td>
      Hier gibt es auch 2 td`s
  </td>
</tr>
</table>
Das war die zweite Tabelle
'
;

?>

<pre>
<?php echo nl2br ($tabellentext); ?>
</pre>
Darum der Aufwand ;-)

Gruß, Car
__________________
*** Lebe jeden Tag, als wenn es Dein letzter wäre ***
Mit Zitat antworten
  #14 (permalink)  
Alt 26-01-2009, 10:50
php_fussel
 Newbie
Links : Onlinestatus : php_fussel ist offline
Registriert seit: Jan 2009
Beiträge: 120
php_fussel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Freut mich, wenn ich Dir einen Ansatz geben konnte. Aber mich interessiert schon , ob es im Test auch ordentlich funktioniert hat ...

edit war hier: Der Limiter ('1') von preg_replace in der For-Schleife ist wichtig, wohl wahr ... meine Version mit dem 'Anhängen' (.=) war natürlich Käse. Erst dachte ich, der String würde sich immer wieder selber überschreiben ... das tut er auch, aber bei jedem Durchlauf wird dann der nächste Platzhalter durch die entsprechende Tabelle ersetzt ...

Geändert von php_fussel (26-01-2009 um 17:12 Uhr)
Mit Zitat antworten
  #15 (permalink)  
Alt 26-01-2009, 16:17
CarShaker
 Newbie
Links : Onlinestatus : CarShaker ist offline
Registriert seit: Aug 2002
Ort: Munich
Beiträge: 6
CarShaker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Servus php_fussel,

es funktioniert mit meiner geposteten "nl2br_woTables" ganz gut. Es war ja auch von Deiner Version nicht mehr viel, bis zu dem Ergebnis, dass ich haben wollte. Manchmal braucht man eben nur den richtigen Schubs! ;-)

Mal die Änderungen im Detail:
- bei der regexp-Suche habe ich einen anderen Delimiter gewählt (=Gewohnheit) und um den Modifier "s" erweitert.
- den Platzhalter habe ich halt nur verkürzt :-o
- nl2br habe ich dann auf den String mit Platzhalter angewendet und hinterher alles wieder mit
- preg_replace zusammengesetzt. Dabei musste ich allerdings (kapier ich noch nicht) ein "/" am Anfang und Ende einbauen, sonst hätte er mir die öffnende Klammer "<" vom "<table" und das "t" von "/table>" stehen lassen!?
- ja genau: das mit dem Anhängen war nix ;-)
- und das übergebene Array in preg_replace (ist ja mehrdimensional) mochte er nicht auf Anhieb!

Kannst ja meinen geposteten "$tabellentext" mal durch die Funktion jagen!

Im übrigen kann man die Funktion innerhalb der FOR-Schleife auch dahingehend erweitern, jede Tabelle nochmal auf TDs zu durchsuchen und dort wieder nl2br drüber laufen zu lassen, dann ist der Text innerhalb der Tabelle auch schön! ;-)

Nochmals Danke und Gruß, Car

edit: Bei viel Zeit und Lust werde ich mich an eine Version für geschachtelte Tabellen machen... Die poste ich dann auch mal!
__________________
*** Lebe jeden Tag, als wenn es Dein letzter wäre ***

Geändert von CarShaker (26-01-2009 um 16:22 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:21 Uhr.