ubb code
Maar nu heb ik een ubb tag [chord][/chord] toegevoegd.
Hetgene wat tussen de chord tags staat wordt verzonden naar een functie en die functie geeft dan hetgene terug wat er tussen de tags staat.
Maar dit werkt op de een of andere manier niet, zou iemand me kunne helpen?
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
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
<?php
function ubb_chord($akkoord) {
return $akkoord;
}
function replace($text){
//http://www.phphulp.nl/php/scripts/6/251/
$text = htmlspecialchars($text);
$text = nl2br($text);
$text = preg_replace("#\[b\](.*?)\[/b\]#si","<b>\\1</b>", $text);
$text = preg_replace("#\[u\](.*?)\[/u\]#si","<u>\\1</u>", $text);
$text = preg_replace("#\[chord\](.*?)\[/chord\]#si","<?php echo ubb_chord('\\1') ?>", $text); // hier heb ik hulp nodig
$text = preg_replace("#\[url\](.*?)\[/url\]#si","<a href=\\1 target=_blank>\\1</a>", $text);
$text = preg_replace("#\[url=(.*?)\](.*?)\[/url\]#si","<a href=\\1 target=_blank>\\2</a>", $text);
$text = preg_replace("#\[img\](.*?)\[/img\]#si","<img src=\\1>", $text);
$text = preg_replace("#\[color=(.*?)\](.*?)\[/color\]#si","<font color=\\1>\\2</font>", $text);
$text = preg_replace("#\[move\](.*?)\[/move\]#si","<marquee>\\1</marquee>", $text);
$text = preg_replace("#\[edit\](.*?)\[/edit\]#si","<font color=orange><b>Edit</b></font>: \\1", $text);
return $text;
}
$iets = "[chord]G[/chord]";
$text = replace($iets);
echo $text;
?>
function ubb_chord($akkoord) {
return $akkoord;
}
function replace($text){
//http://www.phphulp.nl/php/scripts/6/251/
$text = htmlspecialchars($text);
$text = nl2br($text);
$text = preg_replace("#\[b\](.*?)\[/b\]#si","<b>\\1</b>", $text);
$text = preg_replace("#\[u\](.*?)\[/u\]#si","<u>\\1</u>", $text);
$text = preg_replace("#\[chord\](.*?)\[/chord\]#si","<?php echo ubb_chord('\\1') ?>", $text); // hier heb ik hulp nodig
$text = preg_replace("#\[url\](.*?)\[/url\]#si","<a href=\\1 target=_blank>\\1</a>", $text);
$text = preg_replace("#\[url=(.*?)\](.*?)\[/url\]#si","<a href=\\1 target=_blank>\\2</a>", $text);
$text = preg_replace("#\[img\](.*?)\[/img\]#si","<img src=\\1>", $text);
$text = preg_replace("#\[color=(.*?)\](.*?)\[/color\]#si","<font color=\\1>\\2</font>", $text);
$text = preg_replace("#\[move\](.*?)\[/move\]#si","<marquee>\\1</marquee>", $text);
$text = preg_replace("#\[edit\](.*?)\[/edit\]#si","<font color=orange><b>Edit</b></font>: \\1", $text);
return $text;
}
$iets = "[chord]G[/chord]";
$text = replace($iets);
echo $text;
?>
Gewijzigd op 01/01/1970 01:00:00 door Bram
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$text = preg_replace("#\[chord\](.*?)\[/chord\]#si","<?php echo ubb_chord('\\1') ?\>", $text); // hier heb ik hulp nodig
?>
Zo werkt dat natuurlijk niet h. Je voert hier in een PHP script opnieuw PHP uit en je wil in een var echo uitvoeren. Beetje tegenstrijdig.
<?php
$text = preg_replace("#\[chord\](.*?)\[/chord\]#si", ubb_chord("\\1"), $text);
?>
Zal het misschien beter doen (zeker ben ik ook weer niet).
$text = preg_replace("#\[chord\](.*?)\[/chord\]#si","<?php echo ubb_chord('\\1') ?\>", $text); // hier heb ik hulp nodig
?>
Zo werkt dat natuurlijk niet h. Je voert hier in een PHP script opnieuw PHP uit en je wil in een var echo uitvoeren. Beetje tegenstrijdig.
<?php
$text = preg_replace("#\[chord\](.*?)\[/chord\]#si", ubb_chord("\\1"), $text);
?>
Zal het misschien beter doen (zeker ben ik ook weer niet).
Gewijzigd op 01/01/1970 01:00:00 door Jesper Diovo
in de functie ubb_chord heb ik dit staan:
Code (php)
1
$data = mysql_query("SELECT * FROM akkoorden WHERE naam=".$akkoord) or die(mysql_error());
dan krijg ik de volgende error:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\1' at line 1
Zet voortaan de query ook eerst in een variabele en laat de functie mysql_query() deze variabele uitvoeren. Dan kun je bij debuggen de query nog eens echoen en zien wat er nu daadwerkelijk aan SQL richting de database wordt gestuurd. Nu moeten we daar naar raden.
G
e |--- 3 ---
B |--- 3 ---
G |--- 0 ---
D |--- 0 ---
A |--- 2 ---
E |--- 1 ---
en dit is dan de functie ubb_chord
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function ubb_chord ($akkoord) {
$query = "SELECT * FROM akkoorden WHERE naam='".$akkoord."'";
$data = mysql_query($query) or die(mysql_error());
echo "<table><tr>";
while($info = mysql_fetch_array( $data ))
{
echo "<td><table><tr><td collspan=4><b><u>".$info['naam']."</u></b></td></tr>";
echo "<tr><td>e</td><td>|---</td><td>".$info['snaar1']."</td><td>---</td></tr>";
echo "<tr><td>B</td><td>|---</td><td>".$info['snaar2']."</td><td>---</td></tr>";
echo "<tr><td>G</td><td>|---</td><td>".$info['snaar3']."</td><td>---</td></tr>";
echo "<tr><td>D</td><td>|---</td><td>".$info['snaar4']."</td><td>---</td></tr>";
echo "<tr><td>A</td><td>|---</td><td>".$info['snaar5']."</td><td>---</td></tr>";
echo "<tr><td>E</td><td>|---</td><td>".$info['snaar6']."</td><td>---</td></tr></table></td>";
}
echo "</tr></table>";
}
$query = "SELECT * FROM akkoorden WHERE naam='".$akkoord."'";
$data = mysql_query($query) or die(mysql_error());
echo "<table><tr>";
while($info = mysql_fetch_array( $data ))
{
echo "<td><table><tr><td collspan=4><b><u>".$info['naam']."</u></b></td></tr>";
echo "<tr><td>e</td><td>|---</td><td>".$info['snaar1']."</td><td>---</td></tr>";
echo "<tr><td>B</td><td>|---</td><td>".$info['snaar2']."</td><td>---</td></tr>";
echo "<tr><td>G</td><td>|---</td><td>".$info['snaar3']."</td><td>---</td></tr>";
echo "<tr><td>D</td><td>|---</td><td>".$info['snaar4']."</td><td>---</td></tr>";
echo "<tr><td>A</td><td>|---</td><td>".$info['snaar5']."</td><td>---</td></tr>";
echo "<tr><td>E</td><td>|---</td><td>".$info['snaar6']."</td><td>---</td></tr></table></td>";
}
echo "</tr></table>";
}
Maar om de een of andere manier selecteert de query niets, want de functie werkt wel, ik heb het al eens geprobeerd door in ubb_chord op de eerste regel dit te schrijven:
Gewijzigd op 01/01/1970 01:00:00 door bram
Code (php)
1
2
3
2
3
<?php
$text = preg_replace_callback("#\[chord\](.*?)\[/chord\]#si", "ubb_chord", $text);
?>
$text = preg_replace_callback("#\[chord\](.*?)\[/chord\]#si", "ubb_chord", $text);
?>
en dan moet je de ubb_chord functie ook even aanpassen. Bijvoorbeeld:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
function ubb_chord($matches)
{
return strtoupper($matches[1]);
}
$text = 'Hello [chord]World and [/chord] others';
$text = preg_replace_callback("#\[chord\](.*?)\[/chord\]#si", "ubb_chord", $text);
echo $text;
?>
function ubb_chord($matches)
{
return strtoupper($matches[1]);
}
$text = 'Hello [chord]World and [/chord] others';
$text = preg_replace_callback("#\[chord\](.*?)\[/chord\]#si", "ubb_chord", $text);
echo $text;
?>
En als 2e moet je $machtes[1], of $akkoord in jouw script, nog even door mysql_real_escape_string halen zodat quotes geen schade meer kunnen veroorzaken.
bedankt het werkt nu :)