Hallo,

Ik gebruik de volgende code om een url te doorzoeken. dit werkt allemaal prima :

<?

/* velden die doorzocht moeten worden: */
$url = 'http://test.nl';

/* bestaat de url reeds ? */
$result = mysql_query("SELECT page_id FROM page WHERE page_url = \"$url\"");
$row = mysql_fetch_array($result);

if( $row['page_id'] )
{
/* zo ja, gebruik dan de oude: */
$page_id = $row['page_id'];
}
else
{
/* zo nee, maak een nieuwe: */
mysql_query("INSERT INTO page (page_url) VALUES (\"$url\")");
$page_id = mysql_insert_id();
}

/* verwijder alle HTML-tags: */
$url = strip_tags($url);
$url = ereg_replace('/&\w;/', '', $url);

/* haal alle woorden eruit: */
preg_match_all("/(\b[\w+]+\b)/",$url,$words);

?>

hierna volgt overigens nog een stuk extra code, maar anders werd het erg onoverzichtelijk om hier te plaatsen.

Hij haalt met deze code alle woorden op uit een url. Echter moet hij naast de url ook worden uit een naam (en later ook uit een omschrijving) halen, dit moet dus toegevoegd worden aan bovenstaande code, maar dat wil me niet echt lukken.

ik heb er zoiets van gemaakt :

<?

/* velden die doorzocht moeten worden: */
$url = 'http://bonnie.islive.nl/?p=629';
$naam = 'anita';

/* bestaat de url reeds ?? */
$result = mysql_query("SELECT page_id,naam_id FROM page,naam WHERE page_url = \"$url\",naam_oms = \"$naam\"");
$row = mysql_fetch_array($result);

if( $row['page_id'],$row['naam_id'] )
{
/* zo ja, gebruik dan de oude: */
$page_id = $row['page_id'];
$naam_id = $row['naam_id'];
}
else
{
/* zo nee, maak een nieuwe: */
mysql_query("INSERT INTO page (page_url),naam (naam_oms) VALUES (\"$url\",\"$naam\")");
$page_id = mysql_insert_id();
$naam_id = mysql_insert_id();
}

/* verwijder alle HTML-tags: */
$url = strip_tags($url);
$url = ereg_replace('/&\w;/', '', $url);

$naam = strip_tags($naam);
$naam = ereg_replace('/&\w;/', '', $naam);

/* haal alle woorden eruit: */
preg_match_all("/(\b[\w+]+\b)/",$url,$words);
preg_match_all("/(\b[\w+]+\b)/",$naam,$words);

?>

ik heb al zoveel geprobeerd, maar snap er nu echt niets meer van. Iemand een suggestie om mij verder te helpen ?
dit is overigens de originele code van $words en daarbij kreeg ik geen foutmelding.

<?
preg_match_all("/(\b[\w+]+\b)/",$omschrijving,$words);
?>

omdat ik naast $omschrijving meerdere variabelen had heb ik dit aangepast naar het volgende, maar naar mijn inziens kan dit geen kwaad:

<?php

/* haal alle woorden eruit: */
preg_match_all("/(\b[\w+]+\b)/",$categorie,$words1);
preg_match_all("/(\b[\w+]+\b)/",$leeftijd,$words2);
preg_match_all("/(\b[\w+]+\b)/",$naam,$words3);
preg_match_all("/(\b[\w+]+\b)/",$naamsite,$words4);
preg_match_all("/(\b[\w+]+\b)/",$omschrijving,$words5);
preg_match_all("/(\b[\w+]+\b)/",$url,$words6);
preg_match_all("/(\b[\w+]+\b)/",$website,$words7);
preg_match_all("/(\b[\w+]+\b)/",$woonplaats,$words8);

$words = array_merge($words1, $words2, $words3, $words4, $words5, $words6, $words7, $words8);

?>
ik had nu het volgende geprobeerd om te kijken of de fout in $words lag :

<?php

$buf = $categorie . $leeftijd . $naam . $naamsite . $omschrijving . $url . $website . $woonplaats;

/* haal alle woorden eruit: */
preg_match_all("/(\b[\w+]+\b)/",$buf,$words);

?>

Helaas krijg ik dezelfde foutmelding. Hij doet precies wat ik wil, maar geeft het volgende aan :

Notice: Undefined offset: 22 in /var/www/vhosts/bla.nlhttpdocs/test.php on line 102

het ligt dus echt aan de for loop in onderstaande code:

<?php


/* doorzoek alle velden op woorden en voeg ze toe in de database: */
for( $i = 0; $words[$i]; $i++ )
{
for( $j = 0; $words[$i][$j]; $j++ )
{
/* bestaat het huidige woord al ? */
$cur_word = addslashes( strtolower($words[$i][$j]) );

$result = mysql_query("SELECT word_id FROM word
WHERE word_word = '$cur_word'");
$row = mysql_fetch_array($result);
if( $row['word_id'] )
{
/* zo ja, gebruik het oude word_id: */
$word_id = $row['word_id'];
}
else
{
/* zo nee,maak een nieuwe: */
mysql_query("INSERT INTO word (word_word) VALUES (\"$cur_word\")");
$word_id = mysql_insert_id();
}

/* voeg het aantal keer dat een woord voorkomt toe in de database: */
mysql_query("INSERT INTO occurrence (word_id,page_id)
VALUES ($word_id,$page_id)");
print "Indexing: $cur_word<br>";
}
}

}
?>

heeft echt niemand een idee ??

ps. $words moet dus wel in de for loop !! maar iets klopt er niet aan, er dient dus iets te worden toegevoegd, maar ik weet echt niet wat !!
Hallo,

Ik heb het probleem inmiddels opgelosd. De for loop is zo geworden:

<?php

for ($i = 0; isset($words[$i]); $i++)
{
for ($j = 0; isset($words[$i][$j]); $j++)
{

?>

Reageren