Autor Zpráva
michaelkiller
Profil
Potreboval by som poradiť s jedným problémom. Chcel by som odfiltrovať všetky tagy a takisto aj bbcode [url=][/url] a podobné vecičky pomocou regulárneho výrazu alebo aj inak ak sa to dá.

V správe by som normálne mohol bbcode používať, ale akonáhle by som do správy zadal [code]blabla[/code], tak celý obsah blabla by sa odfiltroval....

príklad:

[url="index.php"]INDEX[/url], toto sa už nezobrazí ako link [code][url="index.php"]INDEX[/url][/code]

Viete niekto ako na to? Ďakujem
Leo
Profil
Takze jestli to chapu, potrebujete code a veskery jeho obsah nahradit prazdnym retezcem nebo cim? Leo
michaelkiller
Profil
Cely obsah toho code potrebujem vypisat presne v takom zneni ako napisem, teda chcem aby mi vypisalo [url="index.php"]index[/url] a NEVYTVORILO odkaz...
krteczek
Profil
musíš najít začátek a konec a mezitím značky < > nahradit entitami. má to jedno omezení. tu značku kterou použiješ jako oddělovač nesmíš v kodu co chceš vypsat použít, jedině že bys ji už při zápisu psal pomocí html entit.
nrbo já jsem zatím ještě nepřišel na to jak to udělat jinak.
na adrese: http://www.krteczek.czweb.org/test/ je to co zatím umím. tak mužeš vyskoušet
krteczek
michaelkiller
Profil
diky krteczek, vypada to zaujimavo, vymyslel som tuto vec:
$Text = ereg_replace("(\[\*\*\*\])(.*)(\[\/\*\*\*\])", "\\1\\3", $Text);

Lenze by som potreboval este na \\2 pouzit htmlentities..
Zapis ako
$Text = ereg_replace("(\[\*\*\*\])(.*)(\[\/\*\*\*\])", "\\1".htmlentities('\\2')."\\3", $Text);

mi nefunguje... Nejake riesenie?
Dakujem
krteczek
Profil
tak tady je to co zatím mám...
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">

<html>
<head>
<title>pokusný formulář</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
</head>
<body>
<?php
if(!empty($_POST['zdroj']))
{
$zdroj=$_POST['zdroj'];
$zdroj=stripslashes($zdroj);
$prevod=ereg_replace('\[\*\*\*]'," [***] ",$zdroj);
$prevod=ereg_replace('\[\/\*\*\*\]'," [/***] ",$prevod);
$p=explode(" ",$prevod);
$kk="n";
$c=0;
$p1="";
for($i=0;$i < count($p);$i++)
{
if($p[$i]==trim('[***]'))
{
$c=$i+1;
do
{

$p[$c]=str_replace('&', '&amp;', $p[$c]);
$p[$c]=str_replace('*', '*', $p[$c]);
$p[$c]=ereg_replace('\<',' &lt;',$p[$c]);
$p[$c]=ereg_replace('\>','&gt; ',$p[$c]);
$p[$c]=str_replace('\\', '\', $p[$c]);
$p[$c]=str_replace('$', '$', $p[$c]);
$p[$c]=str_replace('[', '[', $p[$c]);
$p[$c]=str_replace(']', ']', $p[$c]);
$p[$c]=str_replace('(', '(', $p[$c]);
$p[$c]=str_replace(')', ')', $p[$c]);
$p[$c]=str_replace('"', '&quot;', $p[$c]);
$p[$c]=str_replace("'", ''', $p[$c]);
$p[$c]=str_replace(",", ',', $p[$c]);
$p[$c]=str_replace('}', '}', $p[$c]);
$c=$c+1;
}
while($p[$c]<>trim('[/***]'));
$i=$c;
}
}
$zobraz="";
for($aa=0;$aa<count($p);$aa++)
{
$zobraz.=trim($p[$aa]).' ';
}
echo stripslashes('<pre>'.$zobraz.'</pre>');
}
?>
<br><br>
<form method="post" action="index.php">
<textarea name="zdroj" type="text" rows="10" cols="50">[***][/***]</textarea>
<input type="submit" name="odesli" value="odešli">
</form>
</body>
</html>

krteczek
michaelkiller
Profil
Vidim, krteczek, dobre riesenie, ale nie prilis elegantne. Prave rozdelovaniu retazca som sa chcel vyhnut. Skoda ze sa to neda urobit pekne jednym prikazom...
Kazdopadne ked ma nic ine nenapadne, tak vyskusam.
Diky
Toto téma je uzamčeno. Odpověď nelze zaslat.

0