php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 10.04.2009, 15:39  
Erfahrener Benutzer
 
Benutzerbild von djscaleo
 
Registriert seit: 19.10.2008
Beiträge: 384
PHP-Kenntnisse:
Fortgeschritten
djscaleo kann nur auf Besserung hoffen
djscaleo eine Nachricht über ICQ schicken djscaleo eine Nachricht über Skype™ schicken
Standard [Erledigt] Nur Wörter rund um ein gesuchtes Wort zeigen

Hi Leute!

Ich schreibe grade an meinem Suchscript und wollte dazu mal wissen, da ich es bisher noch nicht gefunden habe, ob es möglich ist, nur so um die 5 Wörter vor und nach einem gesuchten Wort anzeogen zu lassen. (á la Google)

Resultat sollte halt sein, dass man auch mal 2 Wörter suchen kann...


Kennt jemand so ein Script, oder muss man so etwas erst aufwändig schreiben???


MfG. DjScaleo
djscaleo ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 10.04.2009, 16:43  
Erfahrener Benutzer
 
Benutzerbild von Squall
 
Registriert seit: 19.03.2009
Beiträge: 539
PHP-Kenntnisse:
Fortgeschritten
Squall befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Ich schreibe grade an meinem Suchscript
1. Hast du da schon was geschrieben? wenn ja, was?

2. Soll in der DB oder in einem Dokument gesucht werden?

Zitat:
Resultat sollte halt sein, dass man auch mal 2 Wörter suchen kann...
3. zwie wörter die nebeneinander stehen oder ist es egal an welcher stelle des textes die vorkommen?
Squall ist offline  
Alt 11.04.2009, 09:16  
Erfahrener Benutzer
 
Benutzerbild von djscaleo
 
Registriert seit: 19.10.2008
Beiträge: 384
PHP-Kenntnisse:
Fortgeschritten
djscaleo kann nur auf Besserung hoffen
djscaleo eine Nachricht über ICQ schicken djscaleo eine Nachricht über Skype™ schicken
Standard

Zitat:
1. Hast du schon was geschrieben?
Ja
Zitat:
Wenn ja, was?
PHP-Code:
<h1>Suche</h1>


<form action="index.php?site=search" method="post">
 Suchwort: <input type="text" name="search" size="50"> <input type="submit" name="submit" value="suchen"><br/>
</form>


<?php

$ignore 
= array('&'',');

function 
highlight($search$text){
    
$highlight "<span style=\"background: #FFAD00;\">$search</span>";
    
$text str_replace($search$highlight$text);

    return 
$text;
}

function 
parse_son($value){
    
$value str_replace("-"""$value);
    
$value str_replace("_"""$value);
    
$value str_replace("&"""$value);
    
$value str_replace("?"""$value);

    return 
$value;
}



if(isset(
$_REQUEST[search]) && $_REQUEST[search] != "" && $_REQUEST[search] != " "){

    
// Suchwörter extrahieren
    
$_SESSION[search][komplett] = $_REQUEST[search];
    
    
$_SESSION[search][words] = array();
    
$exp explode(" "$_REQUEST[search]);
    foreach(
$exp as $value){
        if(!
in_array($value$_SESSION[search][words])){
            if(!
in_array($value$ignore)){
                if(
$value != ""){
                    
$_SESSION[search][words][] = parse_son($value);
                }
            }
        }
    }

    foreach(
$_SESSION[search][words] as $array){
        
$exp explode("-"$array); 

        foreach(
$exp as $value){
            if(!
in_array($value$_SESSION[search][words])){
                if(!
in_array($value$ignore)){
                    if(
$value != ""){
                        
$_SESSION[search][words][] = parse_son($value);
                    }
                }
            }
        }
    }


    foreach(
$_SESSION[search][words] as $array){
        
$exp explode("&"$array); 

        foreach(
$exp as $value){
            if(!
in_array($value$_SESSION[search][words])){
                if(!
in_array($value$ignore)){
                    if(
$value != ""){
                        
$_SESSION[search][words][] = parse_son($value);
                    }
                }
            }
        }
    }


    
// Suchen (kompl. Suchwort)
    
$search $_SESSION[search][komplett];

    
// News
    
$query "SELECT text FROM news WHERE (text LIKE '%$search%' OR description LIKE '%$search%')";
    
$sql mysql_query($query);

    while(
$row mysql_fetch_assoc($sql)){        
        echo 
highlight($search$row[text]);
    }

    
//Pages
    
$query "SELECT text FROM pages WHERE (text LIKE '%$search%')";
    
$sql mysql_query($query);

    while(
$row mysql_fetch_assoc($sql)){        
        echo 
highlight($search$row[text]);
    }

    
//Termine
    
$query "SELECT description, date_show, link FROM termine WHERE (description LIKE '%$search%')";
    
$sql mysql_query($query);

    while(
$row mysql_fetch_assoc($sql)){        
        echo 
highlight($search$row[description]);
    }

    
//Moodle
    
$query "SELECT text FROM moodle WHERE (text LIKE '%$search%' OR topic LIKE '%$search%')";
    
$sql mysql_query($query);

    while(
$row mysql_fetch_assoc($sql)){        
        echo 
highlight($search$row[text]);
    }




}

?>
Abfragen über die einzelnen Wörter ($_SESSION[search][words]) kommen auch noch...

Zitat:
2. Soll in der DB oder in einem Dokument gesucht werden?
DB
Zitat:
3. zwei wörter die nebeneinander stehen oder ist es egal an welcher stelle des textes die vorkommen?
Nebeneinander stehen (via $_SESSION[search][komplett]) und der einzelnen wörter (via $_SESSION[search][words])

MfG. DjScaleo

Edit: Code bearbeitet

Geändert von djscaleo (11.04.2009 um 09:39 Uhr).
djscaleo ist offline  
Alt 11.04.2009, 12:22  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Also erstmal: PHP: Arrays - Manual - Why is $foo[bar] wrong?
David ist offline  
Alt 11.04.2009, 12:57  
Erfahrener Benutzer
 
Benutzerbild von djscaleo
 
Registriert seit: 19.10.2008
Beiträge: 384
PHP-Kenntnisse:
Fortgeschritten
djscaleo kann nur auf Besserung hoffen
djscaleo eine Nachricht über ICQ schicken djscaleo eine Nachricht über Skype™ schicken
Standard

was ist???

Soll ich etwa
PHP-Code:
$_SESSION['search']['words'][] 
schreiben???
djscaleo ist offline  
Alt 11.04.2009, 13:18  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Nicht "etwa" sondern "immer". Und zwar bei jedem Feldzugriff, bei dem Du ein Zeichenkettenliteral als Index verwendest.
David ist offline  
Alt 11.04.2009, 16:04  
Erfahrener Benutzer
 
Benutzerbild von djscaleo
 
Registriert seit: 19.10.2008
Beiträge: 384
PHP-Kenntnisse:
Fortgeschritten
djscaleo kann nur auf Besserung hoffen
djscaleo eine Nachricht über ICQ schicken djscaleo eine Nachricht über Skype™ schicken
Standard

Ok, hätt ich nicht gedacht, dass es falsch ist... immerhin klappt es ja...
djscaleo ist offline  
Alt 11.04.2009, 17:56  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Nächster Schritt: Auf die Fehlermeldungen von PHP achten.
Dafür ist es gut, wenn Du auf Deinem Entwicklungsserver dauerhaft das error reporting hochsetzt und ggf. auch display_errors anschaltest.
Hast Du einen dedizierten Entwicklungsserver, also einen Rechner, der nicht nachher als Produktivserver benutzt wird? Wenn nich, solltest Du Dir einen installieren, zum Beispiel per xampp.

Dann lässt Du Dir mit
PHP-Code:
echo 'ini: 'get_cfg_var('cfg_file_path'), "<br />\n"
anzeigen, welche php.ini Du verändern musst.
Zeilen mit einem Semikolon am Anfang sind Kommentare und damit erstmal irrelevant. Folgende Werte in der .ini setzen (die Parameter sind bereits vorhanden. Also suchen und ersetzen).
Code:
error_reporting = E_ALL
display_errors = On
display_startup_error = On
magic_quotes_gpc = Off
magic_quotes_runtime = Off
Danach den Apache neu starten und die (veränderten) Werte mit
PHP-Code:
foreach( array('display_errors''display_startup_errors''error_reporting''magic_quotes_gpc''magic_quotes_runtime') as $p) {
  echo 
$p': 'ini_get($p), "<br />\n";

abtesten.
Was gibt Dir das letzte Skript nach den Änderungen aus?
David ist offline  
Alt 11.04.2009, 18:23  
Erfahrener Benutzer
 
Benutzerbild von Squall
 
Registriert seit: 19.03.2009
Beiträge: 539
PHP-Kenntnisse:
Fortgeschritten
Squall befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
    foreach($_SESSION[search][words] as $array){
        
$exp explode("-"$array); 

        foreach(
$exp as $value){
            if(!
in_array($value$_SESSION[search][words])){
                if(!
in_array($value$ignore)){
                    if(
$value != ""){
                        
$_SESSION[search][words][] = parse_son($value);
                    }
                }
            }
        }
    }


    foreach(
$_SESSION[search][words] as $array){
        
$exp explode("&"$array); 

        foreach(
$exp as $value){
            if(!
in_array($value$_SESSION[search][words])){
                if(!
in_array($value$ignore)){
                    if(
$value != ""){
                        
$_SESSION[search][words][] = parse_son($value);
                    }
                }
            }
        }
    } 
Hab ich einen denkfehler oder ist $array jeweils ein array und dadurch der explode und die folgenden abfragen hinfällig?
Squall ist offline  
Alt 11.04.2009, 18:46  
Erfahrener Benutzer
 
Benutzerbild von djscaleo
 
Registriert seit: 19.10.2008
Beiträge: 384
PHP-Kenntnisse:
Fortgeschritten
djscaleo kann nur auf Besserung hoffen
djscaleo eine Nachricht über ICQ schicken djscaleo eine Nachricht über Skype™ schicken
Standard

PHP-Code:
$_SESSION[search][words] as $array 
einmal werden die Wörter, indenen ein - vorhanden ist, getrennt (z.B. Weihnachts-Konzert => Weihnachts, konzert)

Und dann das gleiche noch mal mit &....



Ich habe jetzt auch die ini meines Apache geändert und die Seite sieht genau gleich aus... keine Fehler. (bisher)

Geändert von djscaleo (11.04.2009 um 18:51 Uhr).
djscaleo ist offline  
 


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
[Erledigt] REGEXP - Wort nicht in/zwischen bestimmten Tags ersetzen Peppie JavaScript, Ajax und mehr 2 07.02.2009 20:52
Alle Wörter aus DB per Alphabet listen marc77 PHP Tipps 2008 3 14.11.2008 20:44
Wörter aus einer txt mit einer anderen txt vergleichen squizie PHP Tipps 2008 3 03.11.2008 15:02
Buchstaben zählen und überprüfen, ob er im Wort ist? SamuelWulf PHP Tipps 2008 5 28.09.2008 15:16
erkannte Wörter ersetzen, aber nur als eigenen Begriff...? BartTheDevil89 PHP Tipps 2008 6 07.01.2008 15:41
[Erledigt] wörter werden bei zeilenumbruch einfach gesplittet HTML, Usability und Barrierefreiheit 7 02.11.2005 14:11
Frage zu PHP und MySQL - Lexikon - eingetragene Wörter autom nicobischof PHP Tipps 2005-2 4 29.10.2005 13:33
Nur einmal ein bestimmtes Wort löschen PHP Tipps 2005-2 4 20.07.2005 08:18
String: die ersten 20 Zeichen, aber nur vollständige Wörter PHP Tipps 2005-2 13 21.06.2005 14:21
Lange wörter eines Strings teilen? PHP Tipps 2005-2 2 11.06.2005 10:00
Glossar, Wörter finden prüfen und verlinken PHP Tipps 2005 2 31.05.2005 18:59
[Erledigt] Wörter in einem Text suchen PHP Tipps 2005 6 05.04.2005 11:27
Wörter in Wörter nicht highlighten PHP Tipps 2005 4 29.03.2005 13:59
Update per Cronjob (where Feld = Wort) Apfeltyp PHP Tipps 2004-2 3 14.12.2004 18:25
Bestimmte wörter mit CSS in einer Bestimmten Farbe Färben... imported_DJ Nuno HTML, Usability und Barrierefreiheit 12 18.08.2004 10:21

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
zwiewörter, nur bis wort zeigen php, zwie wörter, php wort in array suchen und einfärben, www.zwiewörter.de, zwiewort, kann man in css ein bestimmtes wort farbig machen, 1 wort von $_session, js was nur gesuchtes anzeigt

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:36 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