Problém s úkolem o cenzuře – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Problém s úkolem o cenzuře – PHP – Fórum – Programujte.comProblém s úkolem o cenzuře – PHP – Fórum – Programujte.com

 

Martin Šmarda0
Návštěvník
29. 11. 2006   #1
-
0
-

Učím se PHP a nejdemi skript, který by měl ve vloženém textu nahradit předem vybraná slova značkou [cenzurováno]. Umím trochu C++, takže to píču podle jeho vzoru. Poraďte mi prosím kde je chyba a proč to nefunguje.



<?

define ("CENZURA", "[cenzurováno]");

function cenzura ($text)
{
$pole = explode(" ",$text);
$zakazane = Array("IE");

$a = 0;
while($pole[$a] != 0){
$b=0;
while($zakazane[$b] != 0){
if ($pole[$a] == $zakazane[$b]) $pole[$a] = CENZURA;
$b++;
}
$a++;
}
return implode(" ",$pole);
}
echo cenzura("IE je kvalitní prohlížeč");




?>

Nahlásit jako SPAM
IP: ...–
Život je pes, a pes je nejlepš přítel člověka!
Ondrej Juríček
~ Moderátor
0
Stálý člen
29. 11. 2006   #2
-
0
-

V podmienkach while nemůžeš porovnávať hodnotu v $pole[$a] s nulov, ale s null. Alebo sa to dá zapísať aj takto:



...
while ($pole[$a]){
$b = 0;
while ($zakazane[$b]){
...


Ale aj tak, celý kód je ako škrabanie pravého ucha s ĺavou rukou.

Nahlásit jako SPAM
IP: ...–
Martin Šmarda0
Návštěvník
29. 11. 2006   #3
-
0
-

Proč? Znáš něco elegantnějšího?

Nahlásit jako SPAM
IP: ...–
Život je pes, a pes je nejlepš přítel člověka!
Ondrej Juríček
~ Moderátor
0
Stálý člen
29. 11. 2006   #4
-
0
-

Elegantnejších riešení je veľa! Napr. teraz ma napadlo jedno:

<?php

function cenzura($text) {
$zakazane = array("ie");
foreach ($zakazane as $str) {
$text = eregi_replace($str, "[cenzurováno]", $text);
}
return $text;
}

echo cenzura("IE je kvalitní prohlížeč");
?>

Nahlásit jako SPAM
IP: ...–
Martin Šmarda0
Návštěvník
29. 11. 2006   #5
-
0
-

Tak dík :)

Nahlásit jako SPAM
IP: ...–
Život je pes, a pes je nejlepš přítel člověka!
Michal Klus0
Newbie
29. 11. 2006   #6
-
0
-

Ja to znam nějak takto:

<?

define ("CENZURA", "[cenzurováno]");

function cenzura ($text)
{
$Zakazane = Array("IE", "Internet Explorer");
$Rozdel = explode(" ", $text);
foreach ($Rozdel as $Test)
{
foreach ($Zakazane as $SpatneSlovo)
{
if ($Test == $SpatneSlovo) $Test = CENZUROVANO;
}
$Vysledek=$Vysledek." ".$Test;
}
return $Vysledek;
}
echo cenzura("IE je kvalitní prohlížeč");
?>

Jestli jsou tam chyby, tak se omlouvám.

Nahlásit jako SPAM
IP: ...–

Ondrej Juríček
~ Moderátor
0
Stálý člen
29. 11. 2006   #7
-
0
-

Note: v mojom príklade nesmieš zabudnúť, že zakázaný reťazec je regulérny výraz! Tak, ak by si chcel nahradiť napríklad reťazce "IE+", tak musíš do pola $zakazane dať "IE+" a pod. (Odporúčam naštudovať regulérne výrazy!)

Nahlásit jako SPAM
IP: ...–
Jakub0
Super člen
30. 11. 2006   #8
-
0
-

Já bych si dovolil upozornit, že funkce str_replace, str_ireplace a preg_replace mohou mít prametry jako pole:



function cenzura($text) {
$zakazane = array('IE');
return str_replace($zakazane, '[cenzura]', $text);
//Pokud je treba case intesive odstranovani(od php5): return str_ireplace($zakazane, '[cenzura]', $text);
//Pokud jsou treba regularni vyrazy: return preg_replace($zakazane, '[cenzura]', $text);
}

echo cenzura("IE je kvalitní prohlížeč");

Nahlásit jako SPAM
IP: ...–
Věřím, že můžete v životě získat všechno, co budete chtít, když budete pomáhat druhým lidem, aby dostali to, co si přejí oni. - Zig Ziglar TOPlist
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 26 hostů

Podobná vlákna

Problém s úkolem c++ — založil Michal

Problém s úkolem c++ — založil Michal

Problém s úkolem z VUT — založil Vlastimil Krška

Pomoc s úkolem — založil Stols

Pomoc s ukolem — založil Bronsky

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý