HTMLWorld - HTML, CSS, JavaScript, PHP, Java, Flash und vieles mehrHTMLWorld:   Home | Impressum
 

 
 

Anzeige 
 
HTMLWorld » Forum

Thema anzeigen - Substring in einem anders formatierten Substr wiederfinden

 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Substring in einem anders formatierten Substr wiederfinden

 

Neues Thema eröffnen   Neue Antwort erstellen    HTMLWorld Foren-Übersicht
   PHP
Vorheriges Thema:
Nächstes Thema:  
Autor Nachricht
asgaroth



Anmeldungsdatum: 13.03.2008
Beiträge: 2

BeitragVerfasst am: 13.03.2008 15:40:01    Titel: Substring in einem anders formatierten Substr wiederfinden Antworten mit Zitat

Hallo,
ein Teil meiner Probleme betrifft zwar JavaScript aber der größte Teil PHP. Um zu verdeutlichen was ich eigentlich will, hier meine komplette Problemstellung:

Es gibt eine HTML Seite mit Text in einem Div tag, darüber gibt es eingabefelder und submit buttons.
Wenn man einen Text Selektiert kommt dieser in ein Eingabefeld und man kann das ganze abschicken.

Dann wird die Selektion an PHP übergeben und dort weiterverarbeitet werden.
Nun soll folgendes passieren:

Der Selektierte Text soll in einem anderen String wiedergefunden werden welcher anders Formatiert ist (der zweite String enthält zusätzliche Zeichen wie [] ## etc. aber der Text an sich ist gleich). Dafür habe ich mir überlegt das ich einfach nur den Kontext benötige in dem sich der Selektierte Text befindet, da ich dann den zweiten String nach der Selektion durchsuche und dann nur noch den Kontext vergleichen muss.

Ich wollte erst den Text und Kontext nur über JavaScript rausfinden. Da das mit dem Kontext da aber ziemlich schwierig ist oder zu sein scheint, habe ich gedacht das ich einfach in den String der den HTML Text der Seite darstellt einen Tag um die Selektion einfügen kann (Damit ich in PHP die Selektion wiederfinde). Dieser String wird dann an PHP übergeben und dort verarbeitet indem ich erstmal die Tags raussuche und dann von dort aus den Kontext vor oder nach der Selektion...

Hier nochmal ein kleines Beispiel:

HTML Page:
Code:
<html> <body> <form name="meineform" method="post" action="verarbeitung.php"> <input type="submit" name="abschicken"> <input type="hidden" name="seitentext" value="">  Morgen wird es <b>Regnen!</b> <br><i>Warum?</i> Weil es heute auch geregnet hat! </form> </body></html>


Nachdem etwas selektiert wurde (hier "Warum? Weil") soll in input "seitentext" folgendes stehen:
Code:
 <input type="submit" name="abschicken"> <input type="hidden" name="seitentext" value="">  Morgen wird es <b>Regnen!</b> <br><i> <selection>Warum?</i> Weil </selection> es heute auch geregnet hat!


Dies ist kein gültiger HTML code, muss es aber auch nicht sein da es nur ein String ist und dieser an PHP übergeben wird. Die Selection Tags sind nur da um unter PHP die Selektion noch herauszufinden.

Der String indem ich das "Warum? Weil" wiederfinden will könnte so aussehen:

Code:

$string2 = "Morgen wird es '''Regnen!''' ''''Warum?'''' Weil es heute auch geregnet hat!"


Da ich nicht alle Vorkommen von "Warum? Weil" benötige sondern nur das bestimmte vom User ausgewählte, benötige ich den Kontext. In diesem Fall: "Morgen wird es" und "Weil es heute auch". Damit sollte sich Genau bestimmen lassen welches "Warum? Weil" gemeint ist.

PHP:

Code:

$text = "<input type="submit" name="abschicken"> <input type="hidden" name="seitentext" value="">  Morgen wird es <b>Regnen!</b> <br><i> <selection>Warum?</i> Weil </selection> es heute auch geregnet hat!";

$text2 = "Morgen wird es '''Regnen!''' ''''Warum?'''' Weil es heute auch geregnet hat!"

$pos1=strpos($text, "<selection>");
$pos2=strpos($text, "</selection>");
$selektion = substr($text, $pos1, $pos2-$pos1);
$vor = substr($text, $pos1-30, 50);
$nach = substr($text, $pos2+12, 50);

//Dies fehlt
entferneHtml($vor,$nach,$selektion);
findeSelektionIn($text2,$selektion,$vor,$nach);

//Findet alle vorkommen der Selektion und schreibt die Positionen in ein Array
function findeSelektionIn(&$text2, $selektion, $vor, $nach){
    $letztes = 0;
    while(strpos($text, $selektion, $letztes)){
        $letztes = strpos($text, $selektion, $letztes);
        $position[]=$letztes;
        $letztes++;
    }

    //Hier fehlt jetzt die überprüfung ob vor und nach stimmt
    //Sowas wie (halb Pseudocode):
    for($i; $i < count($position); $i++){
         if($vor != substr($text2, $position[$i]-strlen($vor), strlen($vor)) ||
          $nach != substr($text2, $position[$i]+strlen($selektion), strlen($nach))
         {
             $tounset[] = $i;
             
         }
         foreach($tounset as key){
              unset($position[$i]);
         }
    }
}


Problem 1: Wie bekomme ich die Tags um das Selektierte Wort in der HTML Seite bzw den String der die Seite darstellt. (Und wirklich nur um das selektierte Wort, nicht um alle Vorkommen des selektierten Wortes).

Problem 2: Wie bekomme ich die Positionen an denen der Kontext übereinstimmt obwohl dort ' ' ' ' ' und ## oder ander Formatierungszeichen sind und man diese NICHT löschen darf? (Die verwendeten Formatierungszeichen findet man übrigens unter: Wikipedia:Cheatsheet - Wikipedia, the free encyclopedia )

Problem 3: Wir nehmen an wir haben Problem 1 gelöst:
Wenn ich diese Positionen jetzt habe, d.h. alle Stellen in $text2 der Selektion deren Kontext gleich dem Kontext des selektierten Wortes ist, dann ist die Frage wie ich dort jetzt etwas Einfüge ohne die syntax zu beschädigen d.h. zb.: ' ' ' ' Verschiedener ' ' ' ' Text soll nicht zu ' ' ' ' <eingefügt> Verschiedener ' ' ' ' Text <eingefügt> werden...

(Solang letzteres nicht verletzt wird, stimmen auch die eingefügten Tags dann in der endgültigen HTML wieder, da dort zb ' ' ' ' Text ' ' ' ' zu <b> Text </b> wird...)

So, ich hoffe ich konnte mich jetzt verständlicher ausdrücken und finde vielleicht jemand der mir helfen kann.

Viele Grüße, asgaroth

P.S.: Gibt es eine möglichkeit das irgendwie mit nem Thread im PHP Forum zu verbinden? Inzwischen gehört es doch eher dort hinein, will aber keinen CrossPost machen... Oder soll ich einfach diese letzte Antwort von mir in PHP reinstecken?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    HTMLWorld Foren-Übersicht
   PHP
Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.