Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Outo ongelma preg_replacen kanssa

juha127 [19.02.2007 00:53:04]

#

Ongelmanani on siis poll järjestelmä, josta on muovattu plugin HumanCMS ohjelmalle. Ohjelma tarkistaa tekstin läpi etsien sieltä jotain muutettavaa ja tämä tarkistus pistää hanttiin pluginin kanssa. Ja antaa tämän näköistä virheilmoitusa:

Parse error: syntax error, unexpected '<' in /var/www/zs/humancms/wikiparse.php(21) : regexp code on line 1

Fatal error: preg_replace() [<a href='function.preg-replace'>function.preg-replace</a>]: Failed evaluating code: &lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;Poll.html?vastaa=1&quot;&gt;Yes &lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;Poll.html?vastaa=2&quot;&gt;No&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href=&quot;Quest-archive.html&quot;&gt;Previous polls&lt;/a&gt;&lt;/b&gt; in /var/www/zs/humancms/wikiparse.php on line 21

Tuosta päätellen virhe tulee tästä kohdasta:

<?php
...
...

$tuloste .= "<b>{$g_kysymys}</b><br /><br />";

        $onx = db_query("SELECT * from {$prefix}mm_gallup_ip WHERE ip='$oma_ip'");
        if(mysql_num_rows($onx)=="0") {

                	$g_vastaukset = db_query("SELECT * from {$prefix}mm_gallup_vastaukset");
                        while($r=mysql_fetch_array($g_vastaukset)) {

                                $vastaus = $r["vastaus"];
                                $kerrat = $r["kerrat"];
                                $id3 = $r["id"];

                                $tuloste .=  "<a href=\"Poll.html?vastaa={$id3}\">{$vastaus}</a><br
                                />";

                        }

        }

...
...
?>

Muuten ohjelma toimii hyvin.
Neuvoa kaipaisin. :/

feenix [19.02.2007 13:45:27]

#

Selvästi siellä ei osata eskapoida syötteitä ja annat sille vaihdettavaksi kamaa jossa on merkkejä, jotka pitäisi eskapoida. Muuten virhettä on mahdotonta selvittää kun ei tuossa koodinpätkässä tehdä regexpejä.

juha127 [19.02.2007 14:54:06]

#

Tuo rivi missä se preg_replace-lause on:

$text = preg_replace($plugins_parse['regexp'],$plugins_parse['replace'],$text);

Ja nuo muuttujat määritetään täällä:

<?php
...
...
$plugins_parse['regexp'][] = "/\\{\\{poll\\}\\}/se";
$plugins_parse['replace'][] = gallup();

$plugins_parse['regexp'][] = "/\\{\\{archive:poll\\}\\}/se";
$plugins_parse['replace'][] = gallup_arkisto();

?>

juha127 [19.02.2007 16:11:55]

#

Sain ratkaistua ongelman, ja ratkaisu oli: gallup() ja gallup_arkisto() piti tulla lainausmerkkeihin.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta