[php mysql] smilies parsen in mysql_fetch_array

Pagina: 1
Acties:

  • Excrusiator
  • Registratie: Juli 2000
  • Laatst online: 18-02 20:19
Ik ben op het moment mijn hele website om het zetten naar een met een mysql database als back-end.

Toen ik nog alleen php met include bestanden gebruikte parste ik mijn html op smilies door de pagina's in een $content string op te slaan of in te lezen. Dan parste ik deze met de volgende php code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<?
//This php code deals with the replacement of tekst smilies into the html code
//to display the corresponding smilie (or smilies).


//Remove slashes from content string
stripslashes ($content);

//Define smilies
$search = array(
    ":D",    //1
    ":+",    //2
    ":?",    //3
    ":'(",    //4
    ">:)",    //5
    "|:(",    //6
    ":(",    //7
    "O-)",    //8
    ":9~",    //9
    ":7",    //10
    "(8>",    //11
    ":{",    //12
    ":*",    //13
    ":P",    //14
    ":r",    //15
    "}:O",    //16
    ":o",    //17
    ";(",    //18
    "*D",    //19
    ":X",    //20
    ":Z",    //21
    ":z",    //22
    ":)",    //23
    ":Y)",    //24
    ";)",    //25
    ":O",    //26
    ":9",    //27
    "B-)",    //28
    "8-)"); //29
//Define images
$replace = array(
    "[img]\"$site/$path_smilies/biggrin.gif\"[/img]",        //1
    "[img]\"$site/$path_smilies/clown.gif\"[/img]",        //2
    "[img]\"$site/$path_smilies/confused.gif\"[/img]",        //3
    "[img]\"$site/$path_smilies/cry.gif\"[/img]",            //4
    "[img]\"$site/$path_smilies/devil.gif\"[/img]",        //5
    "[img]\"$site/$path_smilies/frusty.gif\"[/img]",        //6
    "[img]\"$site/$path_smilies/frown.gif\"[/img]",        //7
    "[img]\"$site/$path_smilies/hypocrite.gif\"[/img]",    //8
    "[img]\"$site/$path_smilies/kwijl.gif\"[/img]",        //9
    "[img]\"$site/$path_smilies/loveit.gif\"[/img]",        //10
    "[img]\"$site/$path_smilies/michel.gif\"[/img]",        //11
    "[img]\"$site/$path_smilies/nosmile.gif\"[/img]",        //12
    "[img]\"$site/$path_smilies/puh.gif\"[/img]",            //13
    "[img]\"$site/$path_smilies/puh2.gif\"[/img]",            //14
    "[img]\"$site/$path_smilies/pukey.gif\"[/img]",        //15
    "[img]\"$site/$path_smilies/rc5.gif\"[/img]",            //16
    "[img]\"$site/$path_smilies/redface.gif\"[/img]",        //17
    "[img]\"$site/$path_smilies/sadley.gif\"[/img]",        //18
    "[img]\"$site/$path_smilies/shiny.gif\"[/img]",        //19
    "[img]\"$site/$path_smilies/shutup.gif\"[/img]",        //20
    "[img]\"$site/$path_smilies/sleepey.gif\"[/img]",        //21
    "[img]\"$site/$path_smilies/sleephappy.gif\"[/img]",    //22
    "[img]\"$site/$path_smilies/smile.gif\"[/img]",        //23
    "[img]\"$site/$path_smilies/vork.gif\"[/img]",            //24
    "[img]\"$site/$path_smilies/wink.gif\"[/img]",            //25
    "[img]\"$site/$path_smilies/yawnee.gif\"[/img]",        //26
    "[img]\"$site/$path_smilies/yummie.gif\"[/img]",        //27
    "[img]\"$site/$path_smilies/shadey.gif\"[/img]",        //28
    "[img]\"$site/$path_smilies/coool.gif\"[/img]");        //29
    //Remove slashes from the replace array
    stripslashes($replace);
//Search for the smilies to replace
for($i = 0; $i < count($search);$i++){
    //Replace the tekst smilies with the images
    $content = str_replace($search[$i],$replace[$i],$content);
}
//Display the content with the replaced smilies
echo $content
?>

Nu ik mijn website om aan het zetten ben naar een mysql database (met de daarbij behorende mysql query's en array's) krijg ik problemen.

Ik gebruik de volgende code om de frontpage van mijn website te genereren:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?
//connect to MySQL server
$connect = mysql_connect("localhost"); 
//select the database
mysql_select_db("mydb", $connect); 

// SQL query 
$query = "SELECT fid,date,time,title,user,content FROM frontpage WHERE fid like '200202' ORDER BY date DESC"; 
$result = mysql_query($query) or die(mysql_error());
    //Loop till all rows are displayed
    while ($row = mysql_fetch_array($result)) {
        echo "<p>$line", "\n";
        echo "$row[title]", "\n";
        echo "<div class=\"date\">$row[date]</div></p>", "\n";
        echo "\n";
        echo "$row[content]", "\n";
        echo "$row[user]", "\n";
    }
?>

Op deze manier wordt natuurlijk niet mijn $result geparsed op smilies. Dus ik paste de php code zo aan dat hij $result ging doorzoeken op de teken combinaties om deze te vervangen door smilies. Maar zodra hij de string doorzoekt draait hij om de een of andere reden al mijn $row's in de array de nek om en gaat mijn php code over zijn nek omdat hij de $row's niet meer vindt (ik had hem zo aangepast dat hij de array alleen deed doorzoeken en aanpassen, niet echo'en).

Ik moet dus iets doen met de code om ervoor te zorgen dat hij bijvoorbeeld alleen de huidige $row[content] parsed op smilies en dan echo'ed. En dan de volgende tot hij alle $row[content] heeft gehad. Alleen heb ik geen flauw idee hoe ik dit moet doen.

<HunterPro> HAL: is Excru intelligent?
<HAL> HunterPro: Hijs weer lekker intelligent.
* Excru aait HAL


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

enkel array != dubbel array.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • Excrusiator
  • Registratie: Juli 2000
  • Laatst online: 18-02 20:19
Op maandag 18 februari 2002 19:58 schreef dusty het volgende:
enkel array != dubbel array.
:?

<HunterPro> HAL: is Excru intelligent?
<HAL> HunterPro: Hijs weer lekker intelligent.
* Excru aait HAL


  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

trouwens, str_replace() kan gewoon arrays aan als input hoor :)

is veeel sneller :)

Klaar voor een nieuwe uitdaging.


  • Arnim
  • Registratie: Juni 2001
  • Laatst online: 04-09 15:49
$result bevat slechts een pointer naar de door mysql gegenereerde resultset die je daarna met bv. mysql_fetch_array kan uitlezen. Daar kan je dus niet in een keer de smilies uitparsen.

Wat je wil is het veld 'content' parsen op de smilies. Die content lees je in de variabele $row['content'].
Die waarde kan je gewoon in je eigen functie stoppen die de content parsed op smilies.

Team ColdFusion


  • Excrusiator
  • Registratie: Juli 2000
  • Laatst online: 18-02 20:19
Op maandag 18 februari 2002 20:38 schreef Arnim het volgende:
$result bevat slechts een pointer naar de door mysql gegenereerde resultset die je daarna met bv. mysql_fetch_array kan uitlezen. Daar kan je dus niet in een keer de smilies uitparsen.

Wat je wil is het veld 'content' parsen op de smilies. Die content lees je in de variabele $row['content'].
Die waarde kan je gewoon in je eigen functie stoppen die de content parsed op smilies.
Je zette me net in de goede richting, het werkt nu (en ook maar 3 graden de andere kant dan dan waar ik naar de oplossing aan het zoeken was :D ).

Moet nu alleen nog even kijken ik dit alles netjes in de parser zet zodat dit onafhankelijk van de $row[naamvanderow] gedaan wordt (moet ik ff een string definieren enzo).

Maar nu zit ik met nog een ander vraagje:
omdat ik mijn site offline ontwikkel (56k6 modem :( ) gebruik ik de string $site in mijn snelkoppelingen zodat deze meeveranderen als ik mijn site upload en de inhoud van de string verander (offline: http://192.168.0.1/x-pc, online: http://www.x-pc.info).
Maar om de een of andere reden worden deze strings als ik die in een mysql resultaat heb staan niet vervangen door de juiste link als ik deze echo (wat dus wel gebeurde toen ik deze in de $content string had staan voordat ik mysql gebruikte.

<HunterPro> HAL: is Excru intelligent?
<HAL> HunterPro: Hijs weer lekker intelligent.
* Excru aait HAL


  • Arnim
  • Registratie: Juni 2001
  • Laatst online: 04-09 15:49
Op maandag 18 februari 2002 20:51 schreef Excrusiator het volgende:

[..]

Maar nu zit ik met nog een ander vraagje:
omdat ik mijn site offline ontwikkel (56k6 modem :( ) gebruik ik de string $site in mijn snelkoppelingen zodat deze meeveranderen als ik mijn site upload en de inhoud van de string verander (offline: http://192.168.0.1/x-pc, online: http://www.x-pc.info).
Maar om de een of andere reden worden deze strings als ik die in een mysql resultaat heb staan niet vervangen door de juiste link als ik deze echo (wat dus wel gebeurde toen ik deze in de $content string had staan voordat ik mysql gebruikte.
Is het niet mogelijk om relatieve links te gebruiken?

Team ColdFusion


  • Excrusiator
  • Registratie: Juli 2000
  • Laatst online: 18-02 20:19
Voor de nieuwsgierige onder jullie post ik even de code die ik gemaakt heb:

frontpage genererende code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?
// SQL query 
$query = "SELECT fid,date,time,title,user,content FROM frontpage WHERE fid like '200202' ORDER BY date DESC"; 
$result = mysql_query($query) or die(mysql_error());
include $resultparse;
    //Loop till all rows are displayed
    while ($row = mysql_fetch_array($result)) {
        echo "<p>$line", "\n";
        echo "$row[title]", "\n";
        echo "<div class=\"date\">$row[date]</div></p>", "\n";
        echo "\n";
        $selectrow = "content";
        include $resultparse;
        echo "$row[content]";
        echo "<p>$row[user]</p>", "\n";
    }
?>

Parse code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?
//This php code deals with the replacement of tekst smilies into the html code
//to display the corresponding smilie (or smilies).


//Define smilies
$search = array(
    ":D",    //1
    ":+",    //2
    ":?",    //3
    ":'(",    //4
    ">:)",    //5
    "|:(",    //6
    ":(",    //7
    "O-)",    //8
    ":9~",    //9
    ":7",    //10
    "(8>",    //11
    ":{",    //12
    ":*",    //13
    ":P",    //14
    ":r",    //15
    "}:O",    //16
    ":o",    //17
    ";(",    //18
    "*D",    //19
    ":X",    //20
    ":Z",    //21
    ":z",    //22
    ":)",    //23
    ":Y)",    //24
    ";)",    //25
    ":O",    //26
    ":9",    //27
    "B-)",    //28
    "8-)"); //29
//Define images
$replace = array(
    "[img]\"$site/$path_smilies/biggrin.gif\"[/img]",        //1
    "[img]\"$site/$path_smilies/clown.gif\"[/img]",        //2
    "[img]\"$site/$path_smilies/confused.gif\"[/img]",        //3
    "[img]\"$site/$path_smilies/cry.gif\"[/img]",            //4
    "[img]\"$site/$path_smilies/devil.gif\"[/img]",        //5
    "[img]\"$site/$path_smilies/frusty.gif\"[/img]",        //6
    "[img]\"$site/$path_smilies/frown.gif\"[/img]",        //7
    "[img]\"$site/$path_smilies/hypocrite.gif\"[/img]",    //8
    "[img]\"$site/$path_smilies/kwijl.gif\"[/img]",        //9
    "[img]\"$site/$path_smilies/loveit.gif\"[/img]",        //10
    "[img]\"$site/$path_smilies/michel.gif\"[/img]",        //11
    "[img]\"$site/$path_smilies/nosmile.gif\"[/img]",        //12
    "[img]\"$site/$path_smilies/puh.gif\"[/img]",            //13
    "[img]\"$site/$path_smilies/puh2.gif\"[/img]",            //14
    "[img]\"$site/$path_smilies/pukey.gif\"[/img]",        //15
    "[img]\"$site/$path_smilies/rc5.gif\"[/img]",            //16
    "[img]\"$site/$path_smilies/redface.gif\"[/img]",        //17
    "[img]\"$site/$path_smilies/sadley.gif\"[/img]",        //18
    "[img]\"$site/$path_smilies/shiny.gif\"[/img]",        //19
    "[img]\"$site/$path_smilies/shutup.gif\"[/img]",        //20
    "[img]\"$site/$path_smilies/sleepey.gif\"[/img]",        //21
    "[img]\"$site/$path_smilies/sleephappy.gif\"[/img]",    //22
    "[img]\"$site/$path_smilies/smile.gif\"[/img]",        //23
    "[img]\"$site/$path_smilies/vork.gif\"[/img]",            //24
    "[img]\"$site/$path_smilies/wink.gif\"[/img]",            //25
    "[img]\"$site/$path_smilies/yawnee.gif\"[/img]",        //26
    "[img]\"$site/$path_smilies/yummie.gif\"[/img]",        //27
    "[img]\"$site/$path_smilies/shadey.gif\"[/img]",        //28
    "[img]\"$site/$path_smilies/coool.gif\"[/img]");        //29
    //Remove slashes from the replace array
    stripslashes($replace);
//Search for the smilies to replace
for($i = 0; $i < count($search);$i++){
    //Replace the tekst smilies with the images
    $row[$selectrow] = str_replace($search[$i],$replace[$i],$row[$selectrow]);
}
?>

Voor de mensen die zich afvragen wat de code include $resultparse; doet, dit is de inhoud van de string: $resultparse=("site_inc/func_result.inc");

Dus niets anders dan de locatie van mijn parse code zodat hij die kan includen.

<HunterPro> HAL: is Excru intelligent?
<HAL> HunterPro: Hijs weer lekker intelligent.
* Excru aait HAL


  • Excrusiator
  • Registratie: Juli 2000
  • Laatst online: 18-02 20:19
Op maandag 18 februari 2002 21:00 schreef Arnim het volgende:

[..]

Is het niet mogelijk om relatieve links te gebruiken?
je bedoelt?:
<a href="/webstat/">http://www.x-pc.info/webstat/</a>

Dit gaat ja, zo kan ik dat ook oplossen (ben ik ook langzamerhand meebezig).
Alleen ben ik nieuwsgierig naar het waarom dat die strings die in mijn mysql database niet worden mee ge-echo'ed (wat een woord...).

<HunterPro> HAL: is Excru intelligent?
<HAL> HunterPro: Hijs weer lekker intelligent.
* Excru aait HAL


  • Arnim
  • Registratie: Juni 2001
  • Laatst online: 04-09 15:49
Kan je niet beter van dat smilie replace stuk een functie maken? Je include hem nu voor ieder record een keer. Dat lijkt me nogal zwaar.

dus een functie in een file die je een keer include aan het begin van de file en daarna in je while lus aanroept alsvolgt:

$content = replace_smilies( $row['content'] );

of iets dergelijks...

Team ColdFusion


  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

en zoals ik al zei: str_replace() kan arrays aan. geen nut om er dus doorheen te for-loopen.

Klaar voor een nieuwe uitdaging.


  • MikeN
  • Registratie: April 2001
  • Laatst online: 13-09 17:41
Op maandag 18 februari 2002 20:51 schreef Excrusiator het volgende:

[..]

Maar om de een of andere reden worden deze strings als ik die in een mysql resultaat heb staan niet vervangen door de juiste link als ik deze echo (wat dus wel gebeurde toen ik deze in de $content string had staan voordat ik mysql gebruikte.
Dan moet je even
PHP:
1
2
3
<?
eval("\"$content\"");
?>

doen ofzo. Dan wordt het nog eventjes nagekeken.

[edit]
Het waarom:
Het is niet zo moeilijk, normaal wordt, als het in een include staat, eerst alles vervangen door php zelf in de inhoud (vanwege de dubbele aanhalingstekens), en dan pas wordt het doorgegeven naar echo. Nu zou MySQL het moeten nakijken, maar die kan dit natuurlijk niet. Daarom moet je PHP eerst nog even het zooitje laten evalueren, en dan gaat het wel goed.

  • Xandrios
  • Registratie: Februari 2001
  • Laatst online: 13-09 14:47
PHP:
1
2
3
4
5
<?
$bericht = eregi_replace('>:)','[img]http://URL/devil.gif>',$bericht);
$bericht[/img]',$bericht);
// etc etc :P
?>

zo doe ik het gewoon...

  • Arnim
  • Registratie: Juni 2001
  • Laatst online: 04-09 15:49
Op maandag 18 februari 2002 21:10 schreef Excrusiator het volgende:

[..]

je bedoelt?:
<a href="/webstat/">http://www.x-pc.info/webstat/</a>
Zoiets ja...
Alleen ben ik nieuwsgierig naar het waarom dat die strings die in mijn mysql database niet worden mee ge-echo'ed (wat een woord...).
Worden die misschien escaped: \$site, zodat ze genegeerd worden? Moet je even in je database zelf kijken (dus via de mysql shell).

Team ColdFusion


  • MikeN
  • Registratie: April 2001
  • Laatst online: 13-09 17:41
Op maandag 18 februari 2002 21:18 schreef Cutebritney het volgende:
PHP:
1
2
3
4
5
<?
$bericht = eregi_replace('>:)','[img]http://URL/devil.gif>',$bericht);
$bericht[/img]',$bericht);
// etc etc :P
?>

zo doe ik het gewoon...
Nu wordt voor elke smilie _het hele_ bericht doorzocht. Beetje traag, niet? Een array gaat veel sneller en str_replace nog sneller.

  • Excrusiator
  • Registratie: Juli 2000
  • Laatst online: 18-02 20:19
Op maandag 18 februari 2002 21:18 schreef Cutebritney het volgende:
PHP:
1
2
3
4
5
<?
$bericht = eregi_replace('>:)','[img]http://URL/devil.gif>',$bericht);
$bericht[/img]',$bericht);
// etc etc :P
?>

zo doe ik het gewoon...
Deze methode gebruikte ik eerst ook. Maar daar ben ik toen heel snel vanaf gestapt omdat mijn server (een cyrix 233) bij een beetje pagina dan 1 a 2 seconden 100% cpu load kreeg. Toen ik het verving met de huidige code (dus de arrays) piekt hij ergens rond de 80 a 90% maximaal voor minder dan 1 seconde. De gemiddelde load voor een pagina zit nu rond de 60 a 70%.

<HunterPro> HAL: is Excru intelligent?
<HAL> HunterPro: Hijs weer lekker intelligent.
* Excru aait HAL


  • Arnim
  • Registratie: Juni 2001
  • Laatst online: 04-09 15:49
Heb je nu ook al gekeken naar het direct gebruiken van arrays in str_replace zoals chem voorstelde? Of heb je een oudere versie van PHP?

Team ColdFusion


  • Excrusiator
  • Registratie: Juli 2000
  • Laatst online: 18-02 20:19
Op maandag 18 februari 2002 21:16 schreef MikeN het volgende:

[..]

Dan moet je even
PHP:
1
2
3
<?
eval("\"$content\"");
?>

doen ofzo. Dan wordt het nog eventjes nagekeken.

[edit]
Het waarom:
Het is niet zo moeilijk, normaal wordt, als het in een include staat, eerst alles vervangen door php zelf in de inhoud (vanwege de dubbele aanhalingstekens), en dan pas wordt het doorgegeven naar echo. Nu zou MySQL het moeten nakijken, maar die kan dit natuurlijk niet. Daarom moet je PHP eerst nog even het zooitje laten evalueren, en dan gaat het wel goed.
als ik die code invoeg:
PHP:
1
2
3
<?
eval("\"$row[content]\"");
?>

Dan krijg ik de volgende error:
Parse error: parse error in d:\phpdev\www\x-pc\site_inc\content_frontpage.inc(67) : eval()'d code on line 1

arnim:
Nee de strings staan niet ge-escaped in mijn database (merkte dat hij de escapes als tekst zag als ik ze uit de database trok, ondanks stripslashes dus ik had ze toen al verwijdert).

<HunterPro> HAL: is Excru intelligent?
<HAL> HunterPro: Hijs weer lekker intelligent.
* Excru aait HAL


  • Excrusiator
  • Registratie: Juli 2000
  • Laatst online: 18-02 20:19
Op maandag 18 februari 2002 21:30 schreef Arnim het volgende:
Heb je nu ook al gekeken naar het direct gebruiken van arrays in str_replace zoals chem voorstelde? Of heb je een oudere versie van PHP?
Dat doe ik toch met de huidige parse code? (of begrijp ik je nu fout?)

<edit>
Ik gebruik php 4.0.6 op mijn apache server (zowel offline als online).
</edit>

<HunterPro> HAL: is Excru intelligent?
<HAL> HunterPro: Hijs weer lekker intelligent.
* Excru aait HAL


  • Arnim
  • Registratie: Juni 2001
  • Laatst online: 04-09 15:49
Op maandag 18 februari 2002 21:35 schreef Excrusiator het volgende:

[..]

Dat doe ik toch met de huidige parse code? (of begrijp ik je nu fout?)
Kijk maar eens op:
http://www.php.net/str_replace
Je kunt daar zien dat je arrays rechtstreeks in str_replace kan stoppen. Dan hoef je die for lus niet te gebruiken. Waarschijnlijk is dat veel sneller.

Team ColdFusion


  • MikeN
  • Registratie: April 2001
  • Laatst online: 13-09 17:41
Dat die eval code fout gaat kan best, moet je even wat klooien met de aanhalingstekens enzo. En _altijd_ {$array['id']} gebruiken. Dus met {} en ''.

[edit]
PHP:
1
2
3
<?
$content = eval("echo \"$content\";"); 
?>

gaat beter.

  • Excrusiator
  • Registratie: Juli 2000
  • Laatst online: 18-02 20:19
Op maandag 18 februari 2002 21:38 schreef Arnim het volgende:

[..]

Kijk maar eens op:
http://www.php.net/str_replace
Je kunt daar zien dat je arrays rechtstreeks in str_replace kan stoppen. Dan hoef je die for lus niet te gebruiken. Waarschijnlijk is dat veel sneller.
Ik heb de huidige code gebenched en vergeleken met de oude code. Conclusie: zelfde cpu load of een niet meetbaar verschil. :)

Maar ik ga die eval code eens bestuderen.
Niet een van de manieren die MikeN mij gegeven heeft wil werken. :D

<HunterPro> HAL: is Excru intelligent?
<HAL> HunterPro: Hijs weer lekker intelligent.
* Excru aait HAL


  • vinnux
  • Registratie: Maart 2001
  • Niet online
De smilie parse functie die ik gebruik ziet er zo uit :
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?
function toSmilies($str)
{
    global $rel;
    
    $out = chop($str);
    $out = trim($out);
    
    connectdb();
    $qry = "SELECT * FROM cosin_smilies WHERE  parse='Y' ORDER by LENGTH(code) DESC,code DESC";
    $res = qry($qry);
    while ($row = mysql_fetch_array($res))
    { 
            $out =    str_replace ( fromDatabaseToString($row["code"]), "[img]\"".$rel[/img]" , $out);
    }

    return $out;
}
?>

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

PHP:
1
2
3
4
5
6
<?
//...
    //Remove slashes from the replace array
    stripslashes($replace);
//...
?>

* Janoz vraagt zich af waar deze uberhaupt voor nodig is.


Er zitten helemaal geen slashes in die strings, dus waarom zou je ze weghalen?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Excrusiator
  • Registratie: Juli 2000
  • Laatst online: 18-02 20:19
Op dinsdag 19 februari 2002 10:06 schreef Janoz het volgende:
PHP:
1
2
3
4
5
6
<?
//...
    //Remove slashes from the replace array
    stripslashes($replace);
//...
?>

* Janoz vraagt zich af waar deze uberhaupt voor nodig is.


Er zitten helemaal geen slashes in die strings, dus waarom zou je ze weghalen?
Omdat in die array het volgende staat:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?
$replace = array(
    "[img]\"/img/smilies/biggrin.gif\"[/img]",        //1
    "[img]\"/img/smilies/clown.gif\"[/img]",        //2
    "[img]\"/img/smilies/confused.gif\"[/img]",    //3
    "[img]\"/img/smilies/cry.gif\"[/img]",            //4
    "[img]\"/img/smilies/devil.gif\"[/img]",        //5
    "[img]\"/img/smilies/frusty.gif\"[/img]",        //6
    "[img]\"/img/smilies/frown.gif\"[/img]",        //7
    "[img]\"/img/smilies/hypocrite.gif\"[/img]",    //8
    "[img]\"/img/smilies/kwijl.gif\"[/img]",        //9
    "[img]\"/img/smilies/loveit.gif\"[/img]",        //10
    "[img]\"/img/smilies/michel.gif\"[/img]",        //11
    "[img]\"/img/smilies/nosmile.gif\"[/img]",        //12
    "[img]\"/img/smilies/puh.gif\"[/img]",            //13
    "[img]\"/img/smilies/puh2.gif\"[/img]",        //14
    "[img]\"/img/smilies/pukey.gif\"[/img]",        //15
    "[img]\"/img/smilies/rc5.gif\"[/img]",            //16
    "[img]\"/img/smilies/redface.gif\"[/img]",        //17
    "[img]\"/img/smilies/sadley.gif\"[/img]",        //18
    "[img]\"/img/smilies/shiny.gif\"[/img]",        //19
    "[img]\"/img/smilies/shutup.gif\"[/img]",        //20
    "[img]\"/img/smilies/sleepey.gif\"[/img]",        //21
    "[img]\"/img/smilies/sleephappy.gif\"[/img]",    //22
    "[img]\"/img/smilies/smile.gif\"[/img]",        //23
    "[img]\"/img/smilies/vork.gif\"[/img]",        //24
    "[img]\"/img/smilies/wink.gif\"[/img]",        //25
    "[img]\"/img/smilies/yawnee.gif\"[/img]",        //26
    "[img]\"/img/smilies/yummie.gif\"[/img]",        //27
    "[img]\"/img/smilies/shadey.gif\"[/img]",        //28
    "[img]\"/img/smilies/coool.gif\"[/img]");        //29
    //Remove slashes from the replace array
    stripslashes($replace);
?>

Het kan aan mij liggen maar volgens mij zitten daar toch echt slashes in. ;)

<HunterPro> HAL: is Excru intelligent?
<HAL> HunterPro: Hijs weer lekker intelligent.
* Excru aait HAL


  • tomato
  • Registratie: November 1999
  • Niet online
Excrusiator: Het kan aan mij liggen maar volgens mij zitten daar toch echt slashes in. ;)
Het kan aan mij liggen maar volgens mij zitten daar toch echt geen slashes in. ;)

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

PHP:
1
2
3
<?
var_dump($result);
?>

Open de source en kijk zelf maar eens.... :Z

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Excrusiator
  • Registratie: Juli 2000
  • Laatst online: 18-02 20:19
Op dinsdag 19 februari 2002 19:48 schreef tomato het volgende:

[..]

Het kan aan mij liggen maar volgens mij zitten daar toch echt geen slashes in. ;)
Ik pak nu een regeltje code van de array $replace:
PHP:
1
2
3
<?
"[img]\"/img/smilies/biggrin.gif\"[/img]",        //1
?>

Als je nu kijkt na src= dan zie je daar \ staan.
Deze slash moet daar staan om ervoor te zorgen dat hij niet escaped op de quote teken die ik gebruik in mijn xhtml code.
Dus zover ik weet moet ik daar toch wel degelijk een stripslashes uitvoeren? :?

<HunterPro> HAL: is Excru intelligent?
<HAL> HunterPro: Hijs weer lekker intelligent.
* Excru aait HAL


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Op dinsdag 19 februari 2002 20:17 schreef Excrusiator het volgende:
Als je nu kijkt na src= dan zie je daar \ staan.
Deze slash moet daar staan om ervoor te zorgen dat hij niet escaped op de quote teken die ik gebruik in mijn xhtml code.
Dus zover ik weet moet ik daar toch wel degelijk een stripslashes uitvoeren? :?
De slash die daar staat is voor de php parser om aan te geven dat de string nog niet afgelopen is, maar dat er slechts een " staat. De parser zal hier dus gewoon een " van maken. In de string zelf zal nu gewoon een " staan en niet zoals jij denkt een \".

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Excrusiator
  • Registratie: Juli 2000
  • Laatst online: 18-02 20:19
Ik heb de eval code eens bekeken op php.net en de volgende code gemaakt met behulp van de gegeven code op php.net:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?
// SQL query 
$query = "SELECT fid,date,time,title,user,content FROM frontpage WHERE fid like '200202' ORDER BY date DESC"; 
$result = mysql_query($query) or die(mysql_error());
    //Loop till all rows are displayed
    while ($row = mysql_fetch_array($result)) {
        echo "<p>$line", "\n";
        echo "$row[title]", "\n";
        echo "<div class=\"date\">$row[date]</div></p>", "\n";
        echo "\n";
        $selectrow = "content";
        include $resultparse;
        eval ("\$row[content] = \"$row[content]\";");
        echo "$row[$selectrow]";
        echo "<p>$row[user]</p>", "\n";
    }
?>

Echter krijg ik nog steeds een parse error met deze code...
Iemand een idee waarom?

<HunterPro> HAL: is Excru intelligent?
<HAL> HunterPro: Hijs weer lekker intelligent.
* Excru aait HAL


  • Excrusiator
  • Registratie: Juli 2000
  • Laatst online: 18-02 20:19
Op dinsdag 19 februari 2002 20:20 schreef Janoz het volgende:

[..]

De slash die daar staat is voor de php parser om aan te geven dat de string nog niet afgelopen is, maar dat er slechts een " staat. De parser zal hier dus gewoon een " van maken. In de string zelf zal nu gewoon een " staan en niet zoals jij denkt een \".
Ik heb het even getest en je hebt gelijk.
Was mij alleen zo uitgelegd dat als ik slashes gebruik in een string dat ik ook stripslashes moet gebruiken.
Dus mijn fout. ;(

<HunterPro> HAL: is Excru intelligent?
<HAL> HunterPro: Hijs weer lekker intelligent.
* Excru aait HAL

Pagina: 1