php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 25.05.2007, 12:04  
there's only one psycho
 
Benutzerbild von PsychoEagle
 
Registriert seit: 21.08.2007
Beiträge: 1.283
PHP-Kenntnisse:
Anfänger
PsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer Mensch
PsychoEagle eine Nachricht über ICQ schicken PsychoEagle eine Nachricht über Skype™ schicken
Standard Highlight von Suchstr in Str -> Problem Groß/Kleinschreib

Hi

ich hab da nen kleines Denk und Durchführungsproblem. Ich möchte eine Funktion schreiben, die einen bestimmten String (=Suchwort oder nur teil eines wortes) in einem anderen String (=Textblock) sucht.

Mein Problem ist dabei Beachtung von Groß und Kleinschreibung.

Hier meine Funktion wie sie momentan aussieht:

PHP-Code:
<?php
  
function textHighlight($high,$str) {
    
$str str_ireplace($high,'<span class="highlight">'$high .'</span>',$str);
      return 
$str;
  }
?>
Sucht man jetzt nach "wasser" (klein geschrieben) und er dann in dem String "Wasserinstallateure und Spenglereien" das Wasser findet, gibt er den String klein aus:

"<span class="highlight">wasser</span>installateure und Spenglereien"

Das soll natürlich nicht sein. Wie kann ich es abdecken, dass er es findet, hervorhebt, aber nicht klein schreibt?

Verwende ich str_replace, findet er großgeschriebene Teile nicht und er hervorhebt nichts

Geh ich die Sache falsch an? Für Vorschläge und Lösungsansätze wär ich euch sehr verbunden

Danke im Voraus

Grüße
Psy
__________________
"Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)
PsychoEagle ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 25.05.2007, 12:53  
Erfahrener Benutzer
 
Benutzerbild von tomtaz
 
Registriert seit: 17.06.2008
Beiträge: 1.762
PHP-Kenntnisse:
Fortgeschritten
tomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig nett
tomtaz eine Nachricht über ICQ schicken tomtaz eine Nachricht über Skype™ schicken
Standard

Versuche es mal mit preg_replace().

Ich bin der Meinung, dass diese Funktion die Groß-Kleinschreibung Ignoriert.
Bin mir da jetzt aber net so sicher, müsst ich nachschaun.
__________________
Mfg Tomtaz
"Es soll jetzt diese Erfindung geben.... Kugel oder so heißt die. Ist so eine Art Suchmaschine..."
tomtaz ist offline  
Alt 25.05.2007, 13:39  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

Tutse net, ausser du setzt das i-Flag

Patern:
[cdot]~bla(blub)~i[/code]
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline  
Alt 25.05.2007, 18:29  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Entscheidend ist eine andere Information, denn str_ireplace ignoriert ja auch die Groß/Kleinschreibung. Mit regulären Ausdrücken kannst Du aber den gefundenen Stringteil erfassen (match) und in das Ersetzungsergebnis mit einer Art Variablen (backreference) einsetzen. preg_replace ist also eine gute Möglichkeit. Es bietet Dir auch weitere Funktionen, z.B. wenn Teilstrings nur am Anfang oder Ende des Wortes erkannt werden sollen etc.
nikosch ist gerade online  
Alt 26.05.2007, 16:19  
there's only one psycho
 
Benutzerbild von PsychoEagle
 
Registriert seit: 21.08.2007
Beiträge: 1.283
PHP-Kenntnisse:
Anfänger
PsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer Mensch
PsychoEagle eine Nachricht über ICQ schicken PsychoEagle eine Nachricht über Skype™ schicken
Standard

Danke für die Tipps ... hab schon irgendwo vermutet, dass man RexExen braucht un wies so mit denen is, kann ich die net so dolle *gg*

Habs so mal versucht:
PHP-Code:
<?php
  
function textHighlight($high,$str) {
    
// $str = str_ireplace($high,'<span class="highlight">'. $high .'</span>',$str);
    
$str preg_replace("/"$high ."/i",
                        
'<span class="highlight">$1</span>',
                        
$str);
      return 
$str;
  }
?>
Aber irgendwie gibt er gar keine Ausgabe aus, sondern bei meinem Beispiel das:

"<span class="highlight"></span>installateure und Spenglereien
"

Was mach ich denn falsch?

Vielen dank nochmal.

Grüße
__________________
"Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)
PsychoEagle ist offline  
Alt 26.05.2007, 16:26  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

- der zu 'matchende' Teil wird durch runde Klammern gekennzeichnet. Ein Blick in den Quelltext zeigt Dir jetzt die span-Tags ohne Inhalt, weil $1 ohne runde Klammern im Ausdruck auch kein Inhalt zugewiesen wird.
- falls im Suchbegriff Ausdrucks-eigene Sonderzeichen vorkommen, müssen diese maskiert werden
nikosch ist gerade online  
Alt 26.05.2007, 16:27  
there's only one psycho
 
Benutzerbild von PsychoEagle
 
Registriert seit: 21.08.2007
Beiträge: 1.283
PHP-Kenntnisse:
Anfänger
PsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer Mensch
PsychoEagle eine Nachricht über ICQ schicken PsychoEagle eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von PsychoEagle
Danke für die Tipps ... hab schon irgendwo vermutet, dass man RexExen braucht un wies so mit denen is, kann ich die net so dolle *gg*

Habs so mal versucht:
PHP-Code:
<?php
  
function textHighlight($high,$str) {
    
// $str = str_ireplace($high,'<span class="highlight">'. $high .'</span>',$str);
    
$str preg_replace("/"$high ."/i",
                        
'<span class="highlight">$1</span>',
                        
$str);
      return 
$str;
  }
?>
Aber irgendwie gibt er gar keine Ausgabe aus, sondern bei meinem Beispiel das:

"<span class="highlight"></span>installateure und Spenglereien
"

Was mach ich denn falsch?

Vielen dank nochmal.

Grüße
Ok vergesst ... ich bin ja au blöd und hab den Suchstring net in ( ) gesetzt. Mit folgendem Funktions-Quellcode funktionÃ*erts:

PHP-Code:
<?php
  
function textHighlight($high,$str) {
    
// $str = str_ireplace($high,'<span class="highlight">'. $high .'</span>',$str);
    
$str preg_replace("/("$high .")/i",
                        
'<span class="highlight">\1</span>',
                        
$str);
      return 
$str;
  }
?>
Edit:

Ja stimmt. Danke nochmal allen und dir!
__________________
"Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)
PsychoEagle 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
Timestamp problem phrain PHP Tipps 2008 2 04.04.2008 09:41
Problem mit CAPTCHA patEwing PHP Tipps 2008 0 11.02.2008 21:57
datensätze defekt oder problem mit dem einlesen? Ministry Datenbanken 4 06.07.2006 18:42
problem!!! PHP Tipps 2006 6 08.02.2006 11:06
[Erledigt] wieder ein Problem bei phpmailer und smtp PHP Tipps 2006 24 07.02.2006 01:07
Problem beim laden von extension mit PHP 5 PHP Tipps 2005 5 09.02.2005 16:15
Array Problem [Ansatz ?] PHP Tipps 2005 0 27.01.2005 18:24
[Erledigt] Problem bei Massenmails versenden mit der Funktion mail PHP-Fortgeschrittene 3 19.01.2005 13:36
[Erledigt] Problem mit Übergabe einer Klasse in PHP4 PHP-Fortgeschrittene 10 08.01.2005 21:00
Problem mit Weiterleitung PHP Tipps 2004-2 16 22.12.2004 17:49
Smarty und PHP-Skript Problem PHP Tipps 2004-2 2 03.12.2004 22:27
[Erledigt] PHP Upload (Master Value/Local Value Problem) PHP-Fortgeschrittene 5 23.11.2004 07:21
Cookie / localhost / Problem gelöst PHP-Fortgeschrittene 11 02.11.2004 22:41
Problem mit alter JavaScript-Funktion woods PHP Tipps 2004 1 13.08.2004 13:34

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php highlighter gross klein schreibung, php suchwort highlight, php highlight klasse groß klein, suchstrase, str_ireplace macht suchwort klein

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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.