Vorheriges Thema: Nächstes Thema: |
Autor |
Nachricht |
asgaroth
Anmeldungsdatum: 13.03.2008 Beiträge: 2
|
Verfasst am: 13.03.2008 15:40:01 Titel: Substring in einem anders formatierten Substr wiederfinden |
|
|
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 |
|
|
|
|
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.
|
|
|