ereg_replace + functie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Arian Stolwijk

Arian Stolwijk

21/10/2006 20:21:00
Quote Anchor link
Hoi, ik heb de volgende code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php

// Verbinding met de database
include_once('db.php');


// De string
$string = '||headlines|1|10||';


// Nummer één zonder functie
$sql = ereg_replace('\|\|(.*)\|(.*)\|(.*)\|\|',"SELECT * FROM nieuws WHERE cat = \\2 LIMIT \\3",$string);
$res = mysql_query($sql) or die(mysql_error());
$aant = mysql_num_rows($res);
echo $aant;

// De sql query laten zien
echo '<p>'.$sql.'</p>';  // Uitkomst: SELECT * FROM nieuws WHERE cat = 1 LIMIT 10

// De functie

function show_headlines($cat,$aant){
    $sql = "SELECT * FROM nieuws WHERE cat = '".$cat."' LIMIT ".$aant;
    $res = mysql_query($sql);
    $aant = mysql_num_rows($res);

    return($sql);
}


// Het vervangen
$function = ereg_replace('\|\|(.*)\|(.*)\|(.*)\|\|',show_headlines('\\2','\\3'),$string);

// De sql query laten zien
echo '<p>'.$function.'</p>';  // Uitkomst: SELECT * FROM nieuws WHERE cat = 1 LIMIT 10


?>


Zoals ik al in het script heb vermeld zijn de bijde uitkomsten het zelfde van de sql.
Echter als ik de slq uitvoor en het aantal velden ga tellen met mysql_num_rows() dan zegt hij bij de bovenste wel een getal en bij de onderste zegt hij dit (even met mysql_erroro() ): Er is iets fout in de gebruikte syntax bij '\3' in regel 1

De functie werkt echter wel. daar licht het niet aan. Het gaat volgens mij fout wat die ereg_replace er in doet. Ik vind het alleen vreemd waarom hij het bij de eerst query wel doet en bij de functie niet. En als ik de sql echo dat hij gewoon het zelfde echo...

Hoe komt dit??

Groeten,
Arian
Gewijzigd op 01/01/1970 01:00:00 door Arian Stolwijk
 
PHP hulp

PHP hulp

23/11/2024 09:00:05
 
Arian Stolwijk

Arian Stolwijk

21/10/2006 21:19:00
Quote Anchor link
Hij werkt al:
met
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$function
= preg_replace('#\|\|(.*)\|(.*)\|(.*)\|\|#e',"show_headlines('\\2','\\3')",$string);
?>
 
Arian Stolwijk

Arian Stolwijk

21/10/2006 21:51:00
Quote Anchor link
Nog even wat.
ik heb
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
// De string
$string = '||headlines|10|1||';



if(preg_match('#\|\|(.*)\|(.*)\|(.*)\|\|#e',$string)){
    $function = preg_replace('#\|\|(.*)\|(.*)\|(.*)\|\|#e',"show_headlines('\\2','\\3')",$string);
}
else{
    $function = '';
}

?>


En nu wil ik dat '\\2' en '\\3' alleen cijfertjes mogen zijn.

ik dacht zoiets dus
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if(preg_match('#\|\|(.*)\|([0-9])\|([0-9])\|\|#e',$string)){
    $function = preg_replace('#\|\|(.*)\|(.*)\|(.*)\|\|#e',"show_headlines('\\2','\\3')",$string);
}
else{
    $function = '';
}

?>


Maar dit werkt helaas niet :S



Edit
Heb ik ook al...
ik moet namelijk na [0-9] een + -je zetten
Gewijzigd op 01/01/1970 01:00:00 door Arian Stolwijk
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.