hoofdletter gevoeligheid substr en str_replace
Ik heb een soort zoekfunctie gemaakt die door alle projecten van de database zoekt.
Hij is alleen hoofdlettergevoelig. Is er een manier om hoofdlettergevoeligheid uit te zetten met de functies substr en str_replace?
http://php.net/manual/en/function.str-replace.php
en substr is niet hoofdletter gevoelig dus die vraag snap ik even niet.
met substr haal je een deel uit een string, dat is niet hoofdletter gevoelig maar het resultaat kun je met bijvoorbeeld strtolower wel wijzinge
Gewijzigd op 15/06/2012 12:06:41 door TJVB tvb
Geef eens de query die je hier voor gebruikt? Kan makkelijker denk ik.
str_replace heb ik vervangen door str_ireplace. Het enige probleem ligt nog bij de hoofdlettergevoeligheid van substr
Laat dan eens je code zien, met substr haal je een deel uit een string. Dan krijg je gewoon dat deel terug. De getallen om te bepalen welk deel hebben geen hoofdletter, dus ik snap je niet echt.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
if (isset($_POST['zoek'])&&$_POST['zoekterm']!='')
{
if (strlen(strstr($row['Titel'],$_POST['zoekterm']))>0||strlen(strstr($row['Omschrijving'],$_POST['zoekterm']))>0||strlen(strstr($row['Naam'],$_POST['zoekterm']))>0)
{
$this->code .= "<tr class='zoekresultaten'>
<td class='active'>".$row['idProject']."</td>
<td class='projecten_titel'><a class='zoekresultaten_link' href='index.php?project=".$row['idProject']."&samenvatting'>".str_ireplace($_POST['zoekterm'],'<b>'.$_POST['zoekterm'].'</b>',$row['Titel'])."</a></td>
<td class='projecten_omschrijving' title='".str_replace($_POST['zoekterm'],'['.$_POST['zoekterm'].']',$row['Omschrijving'])."'>".substr(str_ireplace($_POST['zoekterm'],'<b>'.$_POST['zoekterm'].'</b>',$row['Omschrijving']),'0','49')."...</td>
<td class='projecten_klant'><a class='zoekresultaten_link' href='index.php?klant=".$row['idKlant']."&gegevens'>".str_ireplace($_POST['zoekterm'],'<b>'.$_POST['zoekterm'].'</b>',$row['Naam'])."</td>
?>
if (isset($_POST['zoek'])&&$_POST['zoekterm']!='')
{
if (strlen(strstr($row['Titel'],$_POST['zoekterm']))>0||strlen(strstr($row['Omschrijving'],$_POST['zoekterm']))>0||strlen(strstr($row['Naam'],$_POST['zoekterm']))>0)
{
$this->code .= "<tr class='zoekresultaten'>
<td class='active'>".$row['idProject']."</td>
<td class='projecten_titel'><a class='zoekresultaten_link' href='index.php?project=".$row['idProject']."&samenvatting'>".str_ireplace($_POST['zoekterm'],'<b>'.$_POST['zoekterm'].'</b>',$row['Titel'])."</a></td>
<td class='projecten_omschrijving' title='".str_replace($_POST['zoekterm'],'['.$_POST['zoekterm'].']',$row['Omschrijving'])."'>".substr(str_ireplace($_POST['zoekterm'],'<b>'.$_POST['zoekterm'].'</b>',$row['Omschrijving']),'0','49')."...</td>
<td class='projecten_klant'><a class='zoekresultaten_link' href='index.php?klant=".$row['idKlant']."&gegevens'>".str_ireplace($_POST['zoekterm'],'<b>'.$_POST['zoekterm'].'</b>',$row['Naam'])."</td>
?>
Zoekterm=project
Titel=Project
Zoekresultaat=project
if(stripos($row['Titel',$_POST['zoekterm']) !== FALSE ....
waarom die if statement aanpassen? Die geeft true aan als er een zoekterm is ingevoerd
strlen(strstr($row['Titel'],$_POST['zoekterm']))>0
Je kunt het voor de andere op dezelfde manier oplossen.
Er staat gewoon.
@Albert, jij gebruikt 2 functies die het trager maken dan die ene functie (En die !== False moet omdat het ook position 0 kan zijn die bij != gezien wordt als vals)
alles werkt nu goed :D bedankt allemaal!