Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo,

ich habe ein script welches "Vertipper" (Beispiel: Lufthanas statt Lufthansa) generiert. Ich würde es gerne haben, das dass Script erst auf Anforderung startet. Hier ignoriert das Script aber die Abfrage über das Formular und gibt automatisch das Ergebnisse aus. Kann jemand weiterhelfen?

<?php

error_reporting (0);

?>

<html>

<body>

<form>

Search <input type=text value="<?=$_GET['titel']?>" name=q>

<input type=submit>

</form>

<hr>

<?

//vertipper

if (strlen ($_GET['titel']) > 0)

{

function vertipper($wort) {

$len = strlen($wort);

$liste = array();

// 1. Weggelassene oder doppelte Buchstaben

for ($i = 0; $i < $len; ++$i) {

$liste[] = substr($wort, 0, $i) .

substr($wort, $i+1);

$liste[] = substr($wort, 0, $i+1) .

substr($wort, $i);

}

// 2. Buchstabendreher

for ($i = 0; $i < $len-1; ++$i) {

$liste[] = substr($wort, 0, $i) .

$wort{$i+1} . $wort{$i} .

substr($wort, $i+2);

}

// 3. Auf der Tastatur nahe liegende Buchstaben

$tastaturzeilen = array(

'1234567890ß',

'qwertzuiopü',

'asdfghjklöä',

'yxcvbnm',

);

for ($i = 0; $i < $len; ++$i) {

$buchst = $wort{$i};

$daneben = array();

foreach ($tastaturzeilen as $zeile) {

if (($pos = strpos($zeile, $buchst)) !== false) {

if ($pos-1 >= 0) {

$daneben[] = $zeile{$pos-1};

}

if ($pos+1 < strlen($zeile)) {

$daneben[] = $zeile{$pos+1};

}

}

}

foreach ($daneben as $ersatz) {

$vertipper = $wort;

$vertipper{$i} = $ersatz;

$liste[] = $vertipper;

}

}

return array_values(array_unique($liste));

}

print_r(vertipper($_GET['titel']));

}

?>

</body>

</html>

Geschrieben

Dann frag mittels IF ab, ob deine $_GET-Variable gesetzt ist. Ist das der Fall, dann führe deinen Programmcode (die Ausgabe) aus, wenn nicht, dann wird nichts getan.

Geschrieben

Ich rufe meine Seite aus und das Ergebnis ist da. Das heißt, das Script bringt mir sofort das Ergebnis, ohne das ich es ausführen muss. Das <form> wird komplett ignoriert.

Geschrieben

Moin moin.

Aaaaaalsooo: zuerst ist das php tag vor //vertipper nicht komplett (<?php nicht nur <?)

das selbe ist auch im value im form und das = ist auch fehl am platz.

falsch: value="<?=$_GET['titel']?>"

richtig: value="<?php $_GET['titel']?>"

dann: greifst du $_GET['titel'] ab, setzt die Eingabe im Formfeld mit q (<input type=text value="" name=q>)

dein script ist richtig aber die variable titel wird nicht übergeben sondern die variable q.

also aus dem q ein titel machen:

und zu deinem problem, dass direkt das Ergebnis angezeigt wird. Ich wette das du die seite immer mit gesetzter variable erneuert hast

wenn du das http://[...]/seite.php?title=beispielwort nicht weg machst, funktioniert das script natürlich auch, weil es die variable titel ja bekommt.

also bei imr läufts jetz einwandfrei... jetzt würde mich aber brennend interessieren wofür man ein vertipperscript macht ;)

Gruß Fabi

Geschrieben
Moin moin.

Aaaaaalsooo: zuerst ist das php tag vor //vertipper nicht komplett (<?php nicht nur <?)

das selbe ist auch im value im form und das = ist auch fehl am platz.

falsch: value="<?=$_GET['titel']?>"

richtig: value="<?php $_GET['titel']?>"

falsch, php ini directive shot_open_tags

"<?" ist gleichbedeutend mit "<?php" und

"<?=" gleichbedeutend mit "<? echo" also auch "<?php echo"

Geschrieben

heißt aber auch immer, das es aktiviert sein muss... bzw interpretiert werden können muss und grade wenn man das was andere macht sollte man doch beim Original bleiben.

Es kann jetzt wirklich keiner Argumentieren, dass short-tags zeit sparen... und es macht die ganze sache übersichtlicher, meiner Meinung nach, zumindest...

P.S. das mit dem = statt echo war mir neu. Merci ^^

Geschrieben

ich würde nie behaupten das man mit short_open_tags zeit spart.

und sicher kann man nicht davon ausgehen das es aktiviert ist, allerdings ist es wohl standardmäßig eingeschaltet. und wäre es nicht an hätte das script gar nichts gemach, wäre ja nich mal interpretiert worden.

und ja ich halte short_open_tags für schlechten stil, aber falsch ist es deswegen nicht ^^

gerne ^^

Geschrieben

Hallo NoiR,

klappt auch mit deinen Angaben nicht. Da das Script bei dir funktioniert, kannst du deine Version hier reinkopieren? Dann fällt mir vielleicht der Fehler auf.

PS: Ich habe das Vertipper tool für mich gebaut zwecks eines Projekt für die Uni.

Geschrieben

Ja klar kein Problem.

Hab allerdings noch ein bisschen dran rumgespielt.

hab $_GET[...] direkt abgefangen um zu vermeiden, dass man am Anfang mit einer undefinierten Variable arbeitet... dann hab ich aus "titel" "title" gemacht^^weil ich mich einfach an English im Code gewöhnt hab^^

achso und das error_reporting hab ich aufgedreht... vielleicht liegts ja bei dir noch an was anderem.



<?php
error_reporting (E_ALL);
if(isset($_GET['title'])) {$title = $_GET['title'];}
else {$title = "";}
?>
<html>
<body>
<form>
Search <input type=text value="<?php echo $title?>" name=title>
<input type=submit>
</form>
<hr>
<?php

//vertipper
if (strlen ($title) > 0)
{
function vertipper($wort) {
$len = strlen($wort);
$liste = array();

// 1. Weggelassene oder doppelte Buchstaben
for ($i = 0; $i < $len; ++$i) {
$liste[] = substr($wort, 0, $i) .
substr($wort, $i+1);
$liste[] = substr($wort, 0, $i+1) .
substr($wort, $i);
}

// 2. Buchstabendreher
for ($i = 0; $i < $len-1; ++$i) {
$liste[] = substr($wort, 0, $i) .
$wort{$i+1} . $wort{$i} .
substr($wort, $i+2);
}

// 3. Auf der Tastatur nahe liegende Buchstaben
$tastaturzeilen = array(
'1234567890ß',
'qwertzuiopü',
'asdfghjklöä',
'yxcvbnm',
);

for ($i = 0; $i < $len; ++$i) {
$buchst = $wort{$i};
$daneben = array();
foreach ($tastaturzeilen as $zeile) {
if (($pos = strpos($zeile, $buchst)) !== false) {
if ($pos-1 >= 0) {
$daneben[] = $zeile{$pos-1};
}
if ($pos+1 < strlen($zeile)) {
$daneben[] = $zeile{$pos+1};
}
}
}
foreach ($daneben as $ersatz) {
$vertipper = $wort;
$vertipper{$i} = $ersatz;
$liste[] = $vertipper;
}
}

return array_values(array_unique($liste));
}



print_r(vertipper($title));

}
?>
</body>
</html>

[/PHP]

Hier zum Beweis, das ich nicht schwindle ;)

Für die Uni? Damit eure Profs entziffern können, was ihr wohl eigentlich schreiben wolltet? :D

Fabi

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...