ERLEDIGT
JA
JA
ANTWORTEN
8
8
ZUGRIFFE
551
551
EMPFEHLEN
-
Hallo zusammen,
ich habe schon gegooglet, im Forum geguckt und leider keine Lösung zu meinem Problem gefunden.
Das untenstehende PHP-Sript wurde von unserem internen PHP Entwickler geschrieben und ich muss es jetzt anpassen.
Ich pflege durch eine Datenbank Text ein und mein Problem ist, dass die Seite, in der das Script includiert ist, unendlich lange lädt. Das passiert aber nur, wenn ich wenig Text habe, d.h. wenn ich den bestehenden Text doppelt einpflege, lädt er die Seite normal und zeigt dann natürlich auch den Text zweimal an.PHP-Code:<?php
$valuetext = $dbpagesrow->text;
$valuetext = split(" ",$valuetext);
$valuemass = count($valuetext);
$valuemass1 = $valuemass/100*51;
$valuemass2 = $valuemass/100*49;
$countx=0;
for($count = 0; $count < $valuemass1 || (strpos($valuetext[$count],".")==0 && strpos($valuetext[$count],"!")==0 && strpos($valuetext[$count],"?")==0); $count++)
{
$valuetext1.=$valuetext[$count]." ";
}
if(strpos($valuetext[$count],"</p>".chr(13).chr(10)."<p>")==0){
$valuetext1.=$valuetext[$count]." ";
} else {
$valuesplit=split("</p>".chr(13).chr(10)."<p>",$valuetext[$count]);
$valuetext1.=$valuesplit[0]."</p>".chr(13).chr(10);
$valuetext2.="<p>".$valuesplit[1]." ";
}
for($count1 = $count+1; $count1 < $valuemass1+$valuemass2; $count1++)
{
$valuetext2.=$valuetext[$count1]." ";
}
?>
Ich hoffe ich habe mich verständlich ausgedrückt. Habt bitte ein wenig Nachsicht, ich kenne mich mit PHP nicht so gut aus.
Ich danke schonmal im voraus
-
16.06.09 18:20 #2
- Registriert seit
- Dec 2007
- Ort
- Bremen
- Beiträge
- 3.418
Hi,
warum wendest Du Dich damit nicht an Euren internen PHP-Entwickler? Der wird doch dafür bezahlt. Und immerhin hat er das Ding verzapft und weiß wenigstens, was dieses Script überhaupt machen soll und wo das Problem sein könnte.
LGDa es nötig zu werden scheint: Ich leiste hier keinen Support über PN. Stellt Rückfragen zu Euren Problemen bitte in Eurem Thread, dann können alle helfen.
-
16.06.09 20:41 #3
- Registriert seit
- Feb 2008
- Beiträge
- 522
Hi
wenn ein Script endlos lädt liegt nahe, dass eine Endlosschleife eingebaut wurde.
Ich vermute den Fehler mal in der ersten forSchleife.Napoleon trug rote Kleidung, damit seine Soldaten nicht sahen, dass er verwundet war.
Die Naz!s trugen braune Hosen ...
-
Würde ich auch ermuten, und zwar hier:
Code :1 2 3 4 5 6 7 8 9
for($count = 0; $count < $valuemass1 || (strpos($valuetext[$count],".")[COLOR="Red"][B]==[/B][/COLOR]0 && strpos($valuetext[$count],"!")[COLOR="Red"][B]==[/B][/COLOR]0 && strpos($valuetext[$count],"?")[COLOR="Red"][B]==[/B][/COLOR]0); $count++)
strpos() liefert ja die Position des Suchstrings, falls er nicht gefunden wurde, ein false
Der Vergleich ==0 trifft zu, wenn der gesuchte String am Anfang steht, oder wenn er nicht gefunden wurde.
Ich weiss jetzt nicht, ob das Skript auf das erstere oder letztere prüfen soll, auf jeden Fall:
Wenn geprüft werden soll, ob der String am Anfang steht, schreibe
un wenn geprüft werden soll, ob der String nicht gefunden wurdeCode :1
===0
...also auch den Typ der Rückgabe von strpos() vergleichen.Code :1
===false
(Wenn ich den Code nochmal lese, macht nur das letztere Sinn
)
-
Entschuldigt für die späte Rückmeldung, aber eigentlich dachte ich dieses Thread wäre nicht mehr da, da ich ihn gestern gleich wieder gelöscht hatte, nachdem der "Fehler" weg war. Aufeinmal...ja und so schnell wie er weg war ist er auch wieder da.
Nun habe ich die Änderungen mal versucht und es funktioniert leider nicht, weiß nur nicht ob ich das so richtig gemacht hab.
PHP-Code:for($count = 0; $count < $valuemass1 || (strpos($valuetext[$count],".")===0 && strpos($valuetext[$count],"!")===0 && strpos($valuetext[$count],"?")===0); $count++)
Beide Varianten funktionieren nicht. Es tut mir leid wenn ich mich zu blöd anstelle, aber ich hab bei PHP noch nicht wirklich den Überblick.PHP-Code:for($count = 0; $count < $valuemass1 || (strpos($valuetext[$count],".")===false && strpos($valuetext[$count],"!")===false && strpos($valuetext[$count],"?")===false); $count++)
Aber vielen Dank für die Hilfe und die Nachsicht
-
17.06.09 21:25 #6
- Registriert seit
- Dec 2007
- Ort
- Bremen
- Beiträge
- 3.418
Hi,
ich habe das Script mal mit folgendem Text aus dem PHP-Manual getestet:
Das Ergebnis war eine ziemlich gleichmäßige Verteilung auf die beiden Variablen. Poste doch mal ein Beispiel, das sehr ungleichmäßig verteilt wird und eins, bei dem das Script nicht stoppt.Die Zeichenkette oder das Array mit Zeichenketten zum Ersetzen. Falls dieser Parameter eine Zeichenkette ist und der Parameter pattern ein Array, werden alle Suchmuster durch diese Zeichenkette ersetzt. Falls sowohl pattern als auch replacement Arrays sind, wird jedes pattern durch das Gegenstück aus replacement ersetzt. Wenn das replacement -Array weniger Elemente hat als das pattern -Array, wird jedes überzählige pattern durch die leere Zeichenkette ersetzt.
replacement darf Referenzen in der Form \\n oder (ab PHP 4.0.4) $n enthalten, wobei Letztere vorzuziehen ist. Jede dieser Referenzen wird mit dem Text ersetzt, der vom n-ten eingeklammerten Suchmuster erfasst wurde. n kann einen Wert von 0 bis 99 haben. \\0 oder $0 beziehen sich auf den Text, der auf das komplette Suchmuster passt. Um die Nummer des erfassenden Teil-Suchmusters zu erhalten, werden öffnende Klammern mit 1 beginnend von links nach rechts gezählt. Um einen Backslash im Ersatz zu verwenden, muss er verdoppelt werden ("\\\\" PHP-Zeichenkette).
Wenn Sie mit einer Ersetzung arbeiten wollen, in der auf eine Rückreferenzierung direkt eine weitere Zahl folgt (d.h., direkt nach der Übereinstimmmung mit einem Suchmuster soll eine Zahl kommen), können Sie für Ihre Rückreferenzierung nicht die Schreibweise \\1 verwenden. So würde z.B. \\11 die Funktion preg_replace() verwirren, weil sie nicht weiß, ob Sie die Rückreferenzierung \\1 gefolgt von der Zahl 1 wollen oder nur die Rückreferenzierung \\11. In diesem Fall ist die Lösung, \${1}1 zu verwenden. Damit wird eine isolierte Rückreferenzierung $1 erzeugt und die 1 bleibt ein Buchstabensymbol.
Wenn Sie den Modifikator e verwenden, maskiert diese Funktion ein paar Zeichen (nämlich ', ", \ und NULL) in den Zeichenketten, mit denen die Rückreferenzierungen ersetzen werden. Das wird gemacht, um sicherzustellen, dass keine Syntaxfehler entstehen, wenn Rückreferenzierungen verwendet werden, die einfache oder doppelte Anführungszeichen enthalten (z.B. 'strlen(\'$1\')+strlen("$2")'). Vergewissern Sie sich, dass Sie die Zeichenketten-Syntax von PHP kennen, um genau zu wissen, wie die ausgewertete Zeichenkette aussieht.
LGDa es nötig zu werden scheint: Ich leiste hier keinen Support über PN. Stellt Rückfragen zu Euren Problemen bitte in Eurem Thread, dann können alle helfen.
-
Hallo nochmal,
hier habe ich mal ein paar Screenshots. Bei den ersten beiden sieht man, dass der Text nicht proportional gleichmäßig verteilt ist.
Bei dem 3. Screenshot musste ich den ersten Absatz nocheinmal am Ende wiederholen, sonst hätte er die Seite unendlich geladen.
Wenn ich Lorem ipsum Text als Platzhalter einfüge, verteilt er den Text auch relativ gleichmäßig nur bei dem "richtigen" Text spinnt er rum.
Ich glaube, dass hat was mit den Zeichen zählen zu tun. Die Frage ist, ob man das Script nicht lieber umschreibt, dass er Wörter zählt. Dann wäre nur die Frage wie.
lg
-
18.06.09 12:16 #8
- Registriert seit
- Dec 2007
- Ort
- Bremen
- Beiträge
- 3.418
Hi,
Schön, aber wie ein ungleichmäßig verteilter Text aussieht, können wir uns glaube ich alle vorstellen. Du erwartest jetzt aber nicht, dass das jemand zum Testen abtippt, oder?
Es werden doch Wörter gezählt:
Ich glaube eher, dass das an den HTML-Tags liegt, die da offensichtlich drin sind. Was hat denn eigentlich HTML in der Datenbank zu suchen?PHP-Code:$valuetext = split(" ",$valuetext);
$valuemass = count($valuetext);
Und deshalb bräuchte man zum Testen auch Strings, genauso, wie sie in der Datenbank stehen.
LGDa es nötig zu werden scheint: Ich leiste hier keinen Support über PN. Stellt Rückfragen zu Euren Problemen bitte in Eurem Thread, dann können alle helfen.
-
Ok, ich habe jetzt erstmal eine vorübergehende Lösung gefunden. Diese ist zwar noch nicht so schön, aber für erste reicht sie.
Ich habe einfach hinzugefügt, dass er bei einem <br /> auch die Spalten trennen soll.
Aber ich danke euch trotzdemPHP-Code:for($count = 0; $count < $valuemass1 || (strpos($valuetext[$count],".")==0 && strpos($valuetext[$count],"!")==0 && strpos($valuetext[$count],"?")==0 && strpos($valuetext[$count],"</p>".chr(13).chr(10)."<p>")==0); $count++)

lg
Ähnliche Themen
-
Applet lädt unendlich lange
Von Nord-Süd-Richtung im Forum JavaAntworten: 0Letzter Beitrag: 22.11.09, 00:15 -
Seite lädt zulange
Von ungeliebt im Forum PHPAntworten: 3Letzter Beitrag: 24.10.08, 12:07 -
Seite lädt unendlich lange
Von rollerueckwaerts im Forum PHPAntworten: 7Letzter Beitrag: 13.09.08, 12:23 -
Seite lädt zwei Mal oO
Von Benzol im Forum HTML & XHTMLAntworten: 2Letzter Beitrag: 03.09.08, 17:57 -
seite lädt nicht
Von blonder engel im Forum Internet, DSL & FlatrateAntworten: 3Letzter Beitrag: 16.09.03, 09:24





Zitieren

Login






[PHP][Snippet] Array zu XML konvertieren