Ik heb een script gevonden om woorden te vervangen. Maar ik wil per woord een ander woord vervangen. Nu maakt hij van alle ingevulde woorden 1 en het zelfde woord. Maar ik wil het per woord bepalen. hoe doe ik dat?

<?php
function scheldwoorden($tekst,$vervangteken='*') {
// Hier een klein arsenaal eventueel verboden woorden,
// je kan die uitbreiden zolang je fantasie rekt.
$woorden = array ('woord 1','woord2');
// Aantal woorden tellen
$aantal = count($woorden);
// Array aflopen
for ($a=0;$a<$aantal;$a++) {
// Bepalen hoeveel sterretjes (of ander opgegeven teken) er nodig zijn
// door het aantal letters te tellen
$sterretjes = strlen($woorden[$a]);
// Standaardwaarde aan $vervanging geven,
// zodat error_reporting(E_ALL); niet zaagt over
// onbestaande variabelen...
$vervanging = '';
// Replacements aan elkaar kleven
for($i=0;$i<count($sterretjes);$i++) {
$vervanging .= $vervangteken;
}
// Vervang het verboden woord door zijn sterretjes
$tekst = eregi_replace($woorden[$a], 'vervangend woord', $tekst);
}
// Geef de gefilterde tekst weer.
return $tekst;
} ?>
Je maakt een array aan met elk scheldwoord erin en met het vervangend woord ernaast?
<?php
$array=array("scheldwoord1","scheldwoord2");
$repla=array("vervanging1","vervanging2");
?>

En dan met preg_replace volgens mij.

<? function scheldwoorden($text){

$text = htmlspecialchars($text);
$text = nl2br($text);

$text = str_replace("lul","*penis*",$text);
$text = str_replace("grafturt","*overledenvrouw",$text);
#ect.
return $text;

}
?>

dus je zet je varibable zo neer: scheldwoorden($var);

veel plezier
dat is nogal omslachtig, Thomas.

<?php

function scheldwoorden($text) {

$replaceWaarden = array( "lul" => "*penis*", "grafturt" => "*overleden vrouw*" ); //eventueel kan je dit ook database gestuurd doen! lijkt mij handiger, maar dit is maar een voorbeeld ;)

$text = htmlspecialchars($text);
$text = nl2br($text);

foreach( $replaceWaarden AS $key => $value ) {
$text = str_replace( $key, $value, $text );
}
return $text;
}
?>

Volgens mij kan je bij een replace functie ook gewoon een array meegeven, maar met deze foreach loop gaat het ook :) (niet getest!)

Reageren