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 10-06-2009, 14:29
Anbu
 Registrierter Benutzer
Links : Onlinestatus : Anbu ist offline
Registriert seit: Dec 2006
Beiträge: 505
Anbu zeigte ein beschämendes Verhalten in der Vergangenheit
Standard [PHP] Text teilen => Problem HTML Zeichen

Hi,

ich will einen Text teilen. An sich kein Problem, wären da nicht die HTML Zeichen.

Gibt es eine Funktion mit der ich herausfinden kann ob ich mich an Stelle X im String, in einem HTML Zeichen befinde, also z.B. $str[5] = "br />"

wenns keine gibt müsst ich mir eben ein array mit allen html zeichen erstellen und die Sache so abfragen.

Ich hoff da gibts ne elegantere Lösung.
__________________
Lurchi ! Lurchi ! Lurchi !
Mit Zitat antworten
  #2 (permalink)  
Alt 10-06-2009, 14:40
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

frage: was willst du mit den html-zeichen denn machen?

peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #3 (permalink)  
Alt 10-06-2009, 15:05
Anbu
 Registrierter Benutzer
Links : Onlinestatus : Anbu ist offline
Registriert seit: Dec 2006
Beiträge: 505
Anbu zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Mit den HTML Zeichen will ich direkt nichts machen. Ich will aber, dass sie richtig angezeigt werden und ich den Text nicht mitten in einem HTML Zeichen teile.


Zur Info: Der String kommt aus dem Tiny Editor
__________________
Lurchi ! Lurchi ! Lurchi !
Mit Zitat antworten
  #4 (permalink)  
Alt 10-06-2009, 15:08
MoRtAlAn
 PHP Master
Links : Onlinestatus : MoRtAlAn ist offline
Registriert seit: Jan 2002
Ort: Mühlheim am Main
Beiträge: 5.934
MoRtAlAn ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Warum teilst du nicht anhand eines Leerzeichens welches sich an der entsprechenden Position oder in der Nähe befindet ?
Oder ist es ok, wenn du ein Wort einfach an irgendeiner Stelle trennst ?
Mit Zitat antworten
  #5 (permalink)  
Alt 10-06-2009, 15:10
Anbu
 Registrierter Benutzer
Links : Onlinestatus : Anbu ist offline
Registriert seit: Dec 2006
Beiträge: 505
Anbu zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Das Problem ist dass ein Leerzeichen ja auch in einem HTML Zeichen vorkommen kann. z.B. <br />, in einem img tag, wo auch immer.
__________________
Lurchi ! Lurchi ! Lurchi !
Mit Zitat antworten
  #6 (permalink)  
Alt 10-06-2009, 16:54
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Anbu Beitrag anzeigen
Gibt es eine Funktion mit der ich herausfinden kann ob ich mich an Stelle X im String, in einem HTML Zeichen befinde, also z.B. $str[5] = "br />"
Dazu wirst du schon sowas wie einen Parser brauchen.

Das kann im simpelsten Falle was selbstgeschriebenes sein, das einfach vom Beginn an < und > zählt und schaut, ob du dich an einer Position gerade "ausserhalb" befindest.
(Und mit sowas wie &nbsp; - also allgemein Entities bzw. anderen Sonderzeichen-Notationen - musst du natürlich auch noch aufpassen.)

"Fertig" kannst du das ganze auch bekommen - wenn du wohlgeformtes XHTML nutzt, dann kannst du das auch mit den DOM-Methoden von PHP parsen und dir daraus einen DOM-Baum erstellen lassen. Dessen Elemente kannst du dann durchlaufen, und schauen, bei welchen es sich um Textknoten handelt - und dann deine Zählung der Textlänge auf diese beschränken.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #7 (permalink)  
Alt 10-06-2009, 16:59
Anbu
 Registrierter Benutzer
Links : Onlinestatus : Anbu ist offline
Registriert seit: Dec 2006
Beiträge: 505
Anbu zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

danke..
hmm werd wohl was selbst basteln müssen denn der Tiny gibt mir kein "wohlgeformtes XHTML" zurück
__________________
Lurchi ! Lurchi ! Lurchi !
Mit Zitat antworten
  #8 (permalink)  
Alt 10-06-2009, 18:43
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Die DOM Klassen von PHP (nicht die DOM-XML Klassen, die sind veraltet), kommen auch ganz gut mit kaputten XHTML/HTML klar –*man muss nur damit rechnen, dass sie versuchen zu reparieren und damit evtl. was kaputt machen.

Wenn ich das nicht falsch in Erinnerung habe, gibt TinyEdit aber durchaus valides HTML aus … ?!
Mit Zitat antworten
  #9 (permalink)  
Alt 10-06-2009, 19:46
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Warum willst du den Text teilen bzw. was hast du mit den einzelnen Teilen vor?
Wenn du das Markup gar nicht mehr brauchst, mach vorher einfach ein strip_tags(). Solltest du das Markup noch brauchen, musst du beim Teilen mehr beachten als nur außerhalb eines HTML-Tags zu sein. Du brauchst dann einen Parser, der die gesamte Verschachtelung für dich "aufsammelt", damit du sie beim Teilen nicht zerstörst.

Ein Beispiel: <div><h1>Titel</h1><p>Text Text</p><p>Text Text</p></div>

Egal wo du das teilst, du machst dabei immer das DIV kaputt. Willst du den Text zweispaltig darstellen oder auf mehrere Seiten verteilen (Paging), musst du das Markup nach der Teilung "reparieren".

Falsch:
<div><h1>Titel</h1><p>Text Text</p>
<p>Text Text</p></div>

Richtig:
<div><h1>Titel</h1><p>Text Text</p></div>
<div><p>Text Text</p></div>

Dabei tritt noch ein kleines, aber unlösbares Problem auf: Du musst alle Paramater übernehmen, um die CSS-Formatierung zu erhalten. Wenn nun das DIV eine ID hat, hast du diese ID anschließend zweimal im Dokument und das ist kein valides HTML mehr (in den meisten Browsern funktionierts aber dennoch).
Mit Zitat antworten
  #10 (permalink)  
Alt 10-06-2009, 23:31
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von Anbu Beitrag anzeigen
Hi,

ich will einen Text teilen. An sich kein Problem, wären da nicht die HTML Zeichen.

Gibt es eine Funktion mit der ich herausfinden kann ob ich mich an Stelle X im String, in einem HTML Zeichen befinde, also z.B. $str[5] = "br />"
PHP-Code:
preg_match('/\G[^<>]+(?=<[^>]+>)/'$html_src$matchesFALSE$offset); 
Der RegEx "versagt" an zwei Stellen: Am Anfang und am Ende der Datei. Da du aber sicher nicht vor und nach dem html-Element teilen willst, sollte das kein Problem darstellen.

Ach, und natürlich ist <[^>]+> stark vereinfacht. Falls du kaputtes HTML damit prüfen willst, muss der Teil umfangreicher gemacht werden.

Zitat:
Zitat von onemorenerd Beitrag anzeigen
Warum willst du den Text teilen bzw. was hast du mit den einzelnen Teilen vor? ...
Möglicherweise will er nur einen Zeilenumbruch einfügen?

Geändert von fireweasel (10-06-2009 um 23:40 Uhr)
Mit Zitat antworten
  #11 (permalink)  
Alt 11-06-2009, 10:51
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Zitat:
Zitat von fireweasel Beitrag anzeigen
Möglicherweise will er nur einen Zeilenumbruch einfügen?
Ein DIV drumherum mit entsprechend CSS reicht nicht?
Mit Zitat antworten
  #12 (permalink)  
Alt 11-06-2009, 12:58
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von onemorenerd Beitrag anzeigen
Ein DIV drumherum mit entsprechend CSS reicht nicht?
Zum Darstellen im Browser sicher -- aber es gibt Leute, die möchten Quelltexte gerne formatieren. Damit's schöner aussieht, oder was-weiß-ich-auch-immer ... ;-)
Mit Zitat antworten
  #13 (permalink)  
Alt 12-06-2009, 12:05
Anbu
 Registrierter Benutzer
Links : Onlinestatus : Anbu ist offline
Registriert seit: Dec 2006
Beiträge: 505
Anbu zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Also was ich vor hab:

Einen Text aus einem Tiny auf mehrere Divs(keine feste höhe) verteilen.


hmm ich werds mal mit den RegExpr probieren.

Mit meiner Funktion schaff ichs den Text 2 mal zu teilen. Das dritte mal geht er bis ans ende des textes.

PHP-Code:
function spilt_text($txt,$i) {
    
$plain_text strip_tags($txt);
    
$lenghth strlen($plain_text);
    
$part floor($lenghth/$i);
    for(
$z=1;$z<=$i;$z++)
    {
        
$part = ($part $z)+1;
        while(
$plain_text[$part] == " " && $part $lenghth)
        {
            
$part++;
        }
        
        
$word trim(substr($plain_text,strrpos(substr($plain_text,0,$plain_text[$part]-1),' '),$plain_text[$part]));
        
$pos[] = stripos(substr($txt,$part), $word) + strlen(substr($txt,0,$part));
    }
    return 
$pos;

an alle
__________________
Lurchi ! Lurchi ! Lurchi !
Mit Zitat antworten
  #14 (permalink)  
Alt 12-06-2009, 12:21
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Anbu Beitrag anzeigen
Also was ich vor hab:

Einen Text aus einem Tiny auf mehrere Divs(keine feste höhe) verteilen.
Welche Probleme du damit zu erwarten hast, wenn du das zu primitv angehst, hat onemorenerd ja schon dargelegt.
Zitat:
hmm ich werds mal mit den RegExpr probieren.
Halte ich dafür für vollkommen ungeeignet.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #15 (permalink)  
Alt 12-06-2009, 17:41
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Zitat:
Zitat von Anbu Beitrag anzeigen
Also was ich vor hab:

Einen Text aus einem Tiny auf mehrere Divs(keine feste höhe) verteilen.
Dachte ich mir schon. Das teilen von HTML begegnet mir eigentlich immer nur aus zwei Gründen: Spaltendarstellung wie bei dir oder bei der Erzeugung von Anrisstexten. Letzteres ist einen Tick einfacher zu lösen, weil man am Ende nur alle Tags wieder schließen muss. Du musst diese Tags in der nächsten Spalte aber auch wieder aufmachen. Das ist deswegen schwieriger, weil du die Parameter der Tags mitschleppen musst (zumindest Id und Class fürs CSS).

Falls die Spalten bei der Anzeige ungefähr gleich lang werden sollen, dann verlege dich lieber gleich auf eine clientseitige Lösung mit Javascript.
Mit Zitat antworten
Antwort

Lesezeichen


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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Fließender Text bei Hintergrund aus drei Teilen Laire HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 1 30-05-2009 09:38
[HTML] Problem beim anzeigen von Bildern mit Zeichen im Pfad php-sebi HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 1 10-08-2007 12:36
String nach x Zeichen abschneiden - Problem mit HTML Code AchimAppel PHP Developer Forum 8 15-09-2006 14:08
[Funktion] text teilen navraju PHP Developer Forum 7 10-01-2006 19:15
[Script] Script zum Teilen von Text gesucht! Matthew1782 Apps und PHP Script Gesuche 2 13-04-2004 18:52

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 20:47 Uhr.