-
1 Ataşament(e)
Problema Ajax Shoutbox
Am o problema cu un Shoutbox in Ajax + php.
Aici este shoutbox-ul : Google -> Daddy shoutbox (nu pot sa pun link) si problema mea este ca as vrea sa interzic anumite cuvinte sa se posteze in shoutbox (injuraturi, etc).
In fisiere am un fisier json.php si codul este aici : Ataşament 1758
Pe undeva pe acolo am un array care imi scoate spatiile libere din cate inteleg, dar nu stiu daca sigur aici trebuie sa modific si cum :
Cod PHP:
$str = preg_replace(array(
// eliminate single line comments in '// ...' form
'#^\s*//(.+)$#m',
// eliminate multi-line comments in '/* ... */' form, at start of string
'#^\s*/\*(.+)\*/#Us',
// eliminate multi-line comments in '/* ... */' form, at end of string
'#/\*(.+)\*/\s*$#Us'
), '', $str);
// eliminate extraneous space
return trim($str);
}
V-as multumi daca ati putea sa ma ajutati in vreun fel.
-
Ai nevoie de o listă de cuvinte obscene sub forma unui array. Apoi folosești str_replace pentru a le înlocui cu spațiu sau * .
-
Dap. Aproape ca stiam ca de asta am nevoie, dar nu am experienta necesara php sa creez array-ul asta.... ms oricum, o sa ma uit si pe link-ul dat de tine.
-
Ceva de genul:
Cod PHP:
$porcarii = array("cuv1", "cuv2"...);
foreach($porcarii as $item)
{
$str = str_replace($str, $item, '');
}
return $str;
Problema e că poți să ai cuvinte ca sugestie din care să îți rămînă numai egestie, dacă în lista de cuvinte bagi radicalul cuvintelor. Ca să nu se întîmple treaba asta (ca în forumul de la Gîndul :) ) trebuie să te bagi în expresii regulate și alea chiar sunt grele. :)
-
Tot nu ma descurc :| Acum nu stiu unde sa pun ce mi-ai dat tu. Am incercat in 1000 de locuri si nu functioneaza. Nu am observat si lista pentru $item... ? Legat de cuvinte, n-ar fi problema, cum vad unu' nou cum il trec in lista :P
-
Incearca asa:
Cod PHP:
$str = preg_replace(array(
// eliminate single line comments in '// ...' form
'#^\s*//(.+)$#m',
// eliminate multi-line comments in '/* ... */' form, at start of string
'#^\s*/\*(.+)\*/#Us',
// eliminate multi-line comments in '/* ... */' form, at end of string
'#/\*(.+)\*/\s*$#Us'
), '', $str);
// eliminate extraneous space
$porcarii = array("cuv1", "cuv2"...);
foreach($porcarii as $item)
{
$str = str_replace($str, $item, '');
}
return $str;
return trim($str);
}
-
Tot nu merge :( Am copiat ce mi-ai dat si am inlocuit cu cel care l-am postat eu si tot degeaba....
Imi "defecteaza" guestbook-ul. Adica nu-mi mai apar mesajele....
PS : ajaxdaddy.com/demo-jquery-shoutbox.html
-
Am copiat codul lui eugen ca atare si era gresit. Incearca sa inlocuiesti cu asta.
Si aici introduci asa:
$porcarii = array("cuv1", "cuv2","cuv3");
Cod PHP:
$str = preg_replace(array(
// eliminate single line comments in '// ...' form
'#^\s*//(.+)$#m',
// eliminate multi-line comments in '/* ... */' form, at start of string
'#^\s*/\*(.+)\*/#Us',
// eliminate multi-line comments in '/* ... */' form, at end of string
'#/\*(.+)\*/\s*$#Us'
), '', $str);
// eliminate extraneous space
$porcarii = array("cuv1", "cuv2"...);
foreach($porcarii as $item)
{
$str = str_replace($item,'',$str);
}
return $str;
return trim($str);
}
-
Tot nu merge. Am incercat de mai multe ori si nu merge. In momentul in care inlocuiesc codul, se strica tot (nu mai pot sa postez sau sa vad mesajele). Ti-am dat un link. Daca ai timp, poti sa-l downloadezi si probezi. Cand ai timp ca pot sa mai astept si 2-3 zile. Daca vrei... stiu ca ar trebui sa ma descurc si am incercat, dar deja cand intru in php ma ia capu ca nu inteleg nimic :|
As mai fi avut o alta varianta... In fisierele guestbook-ului am un fisier numit messages si este in format .txt ! In fisierul asta am toate mesajele (ora, nick si mesajul trimis de utilizatori). Acum, m-am gandit sa incerc sa-l editez putin punandu-i un cod html si functioneaza perfect. Daca ar exista un cod (php desigur), care sa faca intr-asafel incat ...daca in fisierul ala (messages.txt) exista cuvintele (injuratura1, inj2, inj3) sa se modifice in **** sau orice, doar sa nu le arate. Practic e aceeasi chestie dar ma gandesc ca poate se incaleca codurile alea intre ele si poate de asta nu o merge. Asa fiind in fisier diferit ar fi fost altfel (ma gandesc si eu).
-
Da, încurcasem parametrii în str_replace. :)
w3room, înlocuiește toată funcția reduce string așa:
Cod PHP:
function reduce_string($str)
{
$str = preg_replace(array(
// eliminate single line comments in '// ...' form
'#^\s*//(.+)$#m',
// eliminate multi-line comments in '/* ... */' form, at start of string
'#^\s*/\*(.+)\*/#Us',
// eliminate multi-line comments in '/* ... */' form, at end of string
'#/\*(.+)\*/\s*$#Us'
), '', $str);
$porcarii = array("cuv1", "cuv2", "cuv3");
foreach($porcarii as $item)
{
$str = str_replace($item,'',$str);
}
// eliminate extraneous space
return trim($str);
}
ca să nu ai mai multe returnuri sau acolade în plus sau minus. Așa ar fi cazul să meargă.