Antworten auf deine Fragen:
Neues Thema erstellen

preg_replace Problem

philipp1988

Nicht mehr ganz neu hier

Hallo Community,

ich habe folgendes Problem:

Ich habe eine Datenbank mit X einträgen, die jeweils eine Überschrift wie auch einen Inhalt hat.

Nun habe ich ein Suchfeld wo ich was eingeben kann und ich nach dem eingegeben in der Datenbank suche.
Hat er was gefunden ( unabhängig von Groß und Kleinschreibung ) soll er alle Datensätze ausgeben und rot makieren.
Problem dabei:
Alle gefundenden Bereichen werden rot makiert aber dabei der Inhalt des Suchfeld ersetzt.

Sprich wenn ich nach ll suche, wird Ha[ll]o makiert.
Wenn ich nach LL suche, wird auch Ha[LL]o makiert..aber es wird ja mit dem gesuchten ersetzt....

Sprich ich möchte die Schreibweise schon behalten :)

Hoffe ihr wisst, was ich meine...

Mein Quelltext


PHP:
$query = mysql_query("Select * from lexikon where title LIKE '%".$_GET['suchfeld']."%' OR text LIKE '%".$_GET['suchfeld']."%' ");


if(mysql_num_rows($query) == 0)
{
	echo "Die Suche nach dem Wort <strong>".$_GET['suchfeld']."</strong> ergab leider <strong>0</strong> Treffer.";
}
else
{
	echo "Die Suche nach dem Wort <strong style='color:#FF0000;'>".$_GET['suchfeld']."</strong> ergab <strong>".mysql_num_rows($query)."</strong> Treffer.";
}

echo "<br /><br />";
while($row = mysql_fetch_array($query)) {


$t = "<h3>".$row['title']."</h3>";
$s = $_GET['suchfeld'];
$r = "<strong style='color:#FF0000;'>".$_GET['suchfeld']."</strong>";

$titles = preg_replace("/((<[^>]*)|$s)/ie", '"\2"=="\1"? "\1":"$r"', $t);

echo $titles;

$t = $row['text'];
$s = $_GET['suchfeld'];
$r = "<strong style='color:#FF0000;'>".$_GET['suchfeld']."</strong>";

echo preg_replace("/((<[^>]*)|$s)/ie", '"\2"=="\1"? "\1":"$r"', $t);

MFG und vielen Dank,
Philipp
 

netbandit

Aktives Mitglied

AW: preg_replace Problem

PHP:
<?
$suche='test';
$str='Ein Text mit TEsT, tesT und xTest... ist halt zum Testen da';
echo preg_replace("/(" . $suche . ")/i", "<b>\\1</b>", $str);
?>
 

blackout

Schaf im Wolfspelz

AW: preg_replace Problem

Mögliches Sicherheitsrisiko: In deinen Regex benutzt du eine Benutzereingabe direkt, ohne sie zu maskieren ("/((<[^>]*)|$s)/ie"). Der Benutzer kann also durch sein Suchstichwort beliebige reguläre Ausdrücke ausführen. Hier scheint mir das nicht schlimm zu sein, allgemein solltest du aber jegliche Benutzereingaben auf Validität prüfen. Im Falle von Regex wäre das mit zu machen.

Edit: Kann mir jemand (per PM, will hier nich das Topic übernehmen) erklären, was es mit den '"\2"=="\1"? "\1":"$r"'-Ersetzungen auf sich hat? Sieht so aus wie ne art Regex im Ersetzungsteil à la Trinitätsoperator, hab das so noch nie gesehen. Falls es einfach ein Teil des Skripts ist hab ich es noch weniger verstanden als ich ohnehin schon dachte ;)
 
Zuletzt bearbeitet:
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.635
Beiträge
1.538.468
Mitglieder
67.558
Neuestes Mitglied
StarsMan
Oben