php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 02.06.2005, 16:15  
Gast
 
Beiträge: n/a
Standard

Hi Dacar!

Da ich als unterbeschäftiger Praktikant viiieeel Zeit habe, hab ich mich mal an Dein Problem rangewagt. Das Skript teilt einen Text in zwei (!) Teile, wobei es weder Wörter noch Tags zerreisst.

Sollte sich der Bruchpunkt in mitten eines Span-Tags o.Ä. befinden, wird der Tag vor dem Bruchpunkt geschlossen und dahinter mit den selben Parametern wieder geöffnet.

Verschachtelte Tags werden nicht als Solche erkannt. Das wäre wohl ein bissl zu viel Fummelei für ne kostenlose arbeit

Sag mir, ob Du's brauchen konntest. Gruß Idefix!



PHP-Code:
<?php

function teileText($text) {
    
// Suche Mitte des Strings...
    
$bruchpunkt abs(strlen($text) / 2);

    
$linke_spalte substr($text0$bruchpunkt);
    
//
    // +---------------------------------------------------------------------+
    // | Folgende Fälle müssen ausgeschlossen werden:                        |
    // |                                                                     |
    // | 1. Der Bruchpunkt befindet sich in einem Wort!                      |
    // | 2. Der Bruchpunkt befindet sich in mitten eines Tags                |
    // | 3. Der Bruchpunkt wird von einem Start und Schlusstag umklammert!   |
    // |    (Sollte dies der Fall sein, muß der Tag links vom Br.P.          |
    // |    geschlossen und rechts davon wieder geöffnet werden.)            |
    // +---------------------------------------------------------------------+
    //
    // +-----------------------------------------------------------+
    // | Falls sich der Bruchpunkt in mitten eines Wortes befindet |
    // | wird der Punkt nach links verschoben...                   |
    // +-----------------------------------------------------------+
    //
    
$trenn_zeichen = array(" "","".""!""?""-");

    if (!
in_array(substr($textbruchpunkt1), $trenn_zeichen)) {
        
$bruchpunkt 0;
        for (
$i=0$i<count($trenn_zeichen); $i++) {
            
$neuer_bruchpunkt strrpos($linke_spalte$trenn_zeichen[$i]);
            if (
$neuer_bruchpunkt $bruchpunkt$bruchpunkt $neuer_bruchpunkt 1;
        }
    }
    
//
    // +-----------------------------------------------------------+
    // | Prüfen, ob sich der Bruchpunkt in einem Tag befindet...   |
    // +-----------------------------------------------------------+
    //
    
if (strrpos($linke_spalte"<") > strrpos($linke_spalte">")) {
        
//
        // +-------------------------------------------------------+
        // | Der Bruchpunkt befindet sich definitiv in einem Tag.  |
        // | Also: Bruchpunkt nach links, vor den Tag schieben!    |
        // +-------------------------------------------------------+
        //
        
$bruchpunkt strrpos($linke_spalte"<");

        
$linke_spalte substr($text0$bruchpunkt);
        
$rechte_spalte substr($text$bruchpunkt);
        return array(
$linke_spalte$rechte_spalte);
    } else {
        
//
        // +-----------------------------------------------------------+
        // | Prüfen, ob der Bruchpunkt von Tags umklammert wird...     |
        // | Der Einfachheit halber gehen wir mal davon aus, das Tags  |
        // | nicht verschachtelt vorkommen...                          |
        // +-----------------------------------------------------------+
        //
        
$next_tag_start_right strpos($text"<"$bruchpunkt);
        if (
substr($text$next_tag_start_right 11) == "/") {
            
//
            // +-------------------------------------------------------+
            // | Direkt rechts vom Bruchpunkt befindet sich ein "</",  |
            // | was darauf schließen lässt, dass der Bruchpunkt von   |
            // | einem Tag umklammert wird.                            |
            // | Also: Tag am Bruchpunkt unterbrechen...               |
            // +-------------------------------------------------------+
            //
            
$next_tag_end_right strpos($text">"$bruchpunkt);

            
$next_tag_start_left strrpos($linke_spalte"<");
            
$next_tag_end_left   strrpos($linke_spalte">");

            
$next_tag_left substr($text$next_tag_start_left$next_tag_end_left $next_tag_start_left 1);
            
$next_tag_right substr($text$next_tag_start_right$next_tag_end_right $next_tag_start_right 1);
            
            
$linke_spalte substr($text0$bruchpunkt) . $next_tag_right;
            
$rechte_spalte $next_tag_left substr($text$bruchpunkt);

            return array(
$linke_spalte$rechte_spalte);
        }
    }

    
$linke_spalte substr($text0$bruchpunkt);
    
$rechte_spalte substr($text$bruchpunkt);
    return array(
$linke_spalte$rechte_spalte);
}

?>
PHP-Code:
<?php

$str_text 
"Mit großer Sorge und Betrübnis haben die EU-Mitglieder auf die deutliche Ablehnung der EU-Verfassung durch die niederländischendff<span style=\"border:solid 1px;\"> Bevölkerung reagiert. In zahlreichen Äußerungen wurde</span> die Befürchtung deutlich, dass der Ratifizierungsprozess gescheitert sein könnte und die Union ihre Handlungsfähigkeit verlieren könne.";

$spalten teileText($str_text);


?> 

<table width="150">
    <tr>
        <td><?php echo $spalten[0]?></td>
        <td><?php echo $spalten[1]?></td>
    </tr>
</table>
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 02.06.2005, 16:24  
Gast
 
Beiträge: n/a
Standard

abs() ist sinnfrei, weil eh kein (EDIT) negativer Wert entstehen kann. ceil() wäre besser, da nur ganzzahlige Werte benötigt werden. Aufrunden deshalb, weil die letzte Zeile in der letzten Spalte eh nur das Satzende ist.
 
Alt 02.06.2005, 16:30  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von meikel
abs() ist sinnfrei
absolut recht hast du. ich meinte auch ceil(). nicht abs(). bin etwas trielig heute...hab mich sozusagen versprochen
 
Alt 03.06.2005, 06:14  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Idefix83
hab mich sozusagen versprochen
Ich auch (siehe EDIT).
 
Alt 04.06.2005, 22:53  
Gast
 
Beiträge: n/a
Standard

@idefix83

Hi idefix,

vielen, vielen Dank für Deine Mühe. Leider hat sich mein rechner am letzten Donnerstag kmpl von dieser Welt verabschiedet (der Gute war ja auch schon 2 Jahre). Freitag mußte ich einen neuen besorgen und die Daten von der alten Platte holen. Bis jetzt gerade hieß es installieren (software, Server, etc.). Thunderbird läuft wieder und hat von Euren Mühen berichtet.

Ich werde mir das morgen in Ruhe anschauen. Aber nochmals Danke im Voraus für die viele Mühe....
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
BBCode und Text teilen nilius PHP-Fortgeschrittene 12 23.04.2008 20:05
JavaScript/PHP: qooxdoo 0.7.1 - Teil 1 : Eine Einführung Zergling-new Tutorials 6 25.01.2008 10:41
CSS - Bild im div container überlappt andere container Buschdieb HTML, Usability und Barrierefreiheit 13 19.07.2007 23:17
MySQL-Volltextsuche SvenLittkowski Datenbanken 6 14.06.2007 19:58
Text teilen und in $var aufnehmen CHRIS PHP Tipps 2006 15 16.09.2006 19:45
spalte rechts ausrichten, text aber trotzdem linksbündig Crypi HTML, Usability und Barrierefreiheit 5 14.09.2006 11:35
nicht formatierten Text in mehreren Spalten darstellen PHP-Fortgeschrittene 4 17.02.2006 10:55
CSS - Design (clear - Problem) HTML, Usability und Barrierefreiheit 7 21.12.2005 14:55
Text aus der DB verteilen PHP Tipps 2007 17 16.11.2005 12:04
[Erledigt] Link PHP Tipps 2005-2 10 20.07.2005 21:28
text teilen soulja.rox PHP Tipps 2005-2 3 07.07.2005 11:57
[Erledigt] DIV´s wollen nicht wie ich das will :-) HTML, Usability und Barrierefreiheit 22 28.03.2005 18:36
frames probleme HTML, Usability und Barrierefreiheit 6 18.01.2005 02:33
Zeilenumbrüche aus einem formatierten Text entfernen woods PHP Tipps 2004 9 23.09.2004 12:50
txt-Datei erstellen d-81 PHP Tipps 2004 12 11.08.2004 20:31

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php text zwei teile, php text auf spalten verteilen, $next_tag_start_left = strrpos($linke_spalte, \<\);, php wörter in der mitte teilen

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:55 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.