ereg_replace + functie
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
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
?>
// 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
met
Code (php)
1
2
3
2
3
<?php
$function = preg_replace('#\|\|(.*)\|(.*)\|(.*)\|\|#e',"show_headlines('\\2','\\3')",$string);
?>
$function = preg_replace('#\|\|(.*)\|(.*)\|(.*)\|\|#e',"show_headlines('\\2','\\3')",$string);
?>
ik heb
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
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 = '';
}
?>
// 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)
1
2
3
4
5
6
7
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 = '';
}
?>
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