PHP gevorderde |
|
Ik heb een script dat teksten doorloopt op bepaalde woorden en deze moet hij vervangen door een ander woord of link, dit gebeurt a.d.h.v. een tabel in een database.
Ik heb nu alleen een probleem, het werkt prima, maar eigenlijk iets te goed, ik wil dat alleen de woorden vervangen worden, maar als een woord nu onderdeel is van een ander woord wordt dit ook vervangen, opzich logisch, maar hoe voorkom ik dit?
script:
<?php
function link_replace ($tekst)
{
$query = "SELECT * FROM link_replace";
$result = mysql_query($query) or die (mysql_error());
if (mysql_num_rows($result))
{
while ($row = mysql_fetch_array($result))
{
//arrays maken van de woorden en vervangingen
$words[] = $row['woord'];
$replace[] = $row['vervanging'];
}
//twee arrays combineren tot woorden en vervangingen samen
$array = array_combine($words, $replace);
//tekst doorlopen op woorden die vervangen moeten worden
$newtekst = $tekst;
foreach ($array as $word => $replace)
{
$newtekst = str_replace($word, $replace, $newtekst);
}
return $newtekst;
}
}
$tekst = 'Dit script vervangt de woorden door een vervangend woord of link';
echo 'Originele tekst:<br />'.$tekst;
echo '<br /><br />';
echo 'Aangepaste tekst:<br />'.link_replace($tekst);
?>
<?php function link_replace ($tekst) { $query = "SELECT * FROM link_replace"; { { //arrays maken van de woorden en vervangingen $words[] = $row['woord']; $replace[] = $row['vervanging']; } //twee arrays combineren tot woorden en vervangingen samen $array = array_combine($words, $replace); //tekst doorlopen op woorden die vervangen moeten worden $newtekst = $tekst; foreach ($array as $word => $replace) { } return $newtekst; } } $tekst = 'Dit script vervangt de woorden door een vervangend woord of link'; echo 'Originele tekst:<br />'.$tekst; echo 'Aangepaste tekst:<br />'.link_replace ($tekst); ?>
Als test heb ik het volgende in de db staan:
de wordt het
woorden wordt woord
Maar ik krijg dan dus wel dit op het scherm
Originele tekst:
Dit script vervangt de woorden door een vervangend woord of link
Aangepaste tekst:
Dit script vervangt het woorhetn door een vervangend woord of link
Originele tekst: Dit script vervangt de woorden door een vervangend woord of link Aangepaste tekst: Dit script vervangt het woorhetn door een vervangend woord of link
Dat is niet echt de bedoeling, hoe zorg ik ervoor dat er alleen hele woorden vervangen worden?
Ik heb begrepen dat dit dan met een preg_replace zou moeten met een pattern.
Probleem is alleen dat ik die patterns niet kan schrijven.
Misschien dat iemand die dit wel kan voor mij wil doen?
|