Probleem met preg_match
dan wordt er niets getoont, terwijl ik onder die naam in het systeem sta. Ik heb inmiddels de nodige uren besteed aan het zoeken op internet en het testen van allerlei combinaties, maar kan geen oplossing vinden die werkt.
De bewuste deel van de code is alsvolgt:
if ($zoek != "") {
$teller=0;
while (list($key, $val) = each($inhoud_2)) {
if (preg_match("/^$zoek|.$zoek/i", $inhoud_2[$key])) {
Ik heb geprobeerd aan het eind nog "s" toe te voegen, maar dit levert niets op. De site waar het omgaat is de volgende:
http://sjoerd.rosdorff.dyndns.org/weerpoll_v3
Klik dan op "Controleer deelname" om de bewuste situatie te zien.
Zou iemand mij uit de brand kunnen helpen?
Gewijzigd op 01/01/1970 01:00:00 door CrawlBackwards
Zoals al beschreven in de topic-starter werkt alles naar behoren, behalve wanneer de volledige term ingevoerd wordt, dan komt de match niet tot stand.
ipv die while zou ik een foreach gebruiken al maakt t verder geen verschil..
verder zie ik der zo geen fout in..
heb je error reporting aan staan?
Gewijzigd op 01/01/1970 01:00:00 door CrawlBackwards
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$string = 'Sjoerd (Leiden)';
$zoek = 'Sjoerd \(Leiden\)';
$check = preg_match('/^'.$zoek.'$/i', $string);
echo $check ? 'true' : 'false'; // true
?>
$string = 'Sjoerd (Leiden)';
$zoek = 'Sjoerd \(Leiden\)';
$check = preg_match('/^'.$zoek.'$/i', $string);
echo $check ? 'true' : 'false'; // true
?>
oude code: if (preg_match("/^$zoek|.$zoek/i", $inhoud_2[$key])) {
code nieuw: if (preg_match('/^'.$zoek.'$/i', $inhoud_2[$key])) {
Heb je daar hulp bij nodig, dan zul je wat meer van je script moeten laten zien, bijvoorbeeld hoe je aan $zoek en $inhoud_2 komt.
Inmiddels heb ik het opgelost door de ( en ) te escapen.
if ($zoek != "") {
$zoek=str_replace("(","\(",$zoek);
$zoek=str_replace(")","\)",$zoek);
Nu werken en de losse letters, alleen de naam of alleen de woonplaats en wanneer de volledige naam (woonplaats) wordt ingegeven, wordt deze ook terug gegeven. Probleem opgelost dus :-)
Dank voor het meedenken allemaal.