BBcodes voor in nieuwsbrief
Ik ben bezig met een nieuwsbrief systeem, maar het lukt mij maar niet met het volgende probleem :
- BBcodes.
Ik heb dit gevonden :
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
<?php
function goedfilter1($text){
$text = stripslashes($text);
//transformeert eerst de "goede" tags naar hun bb versie, zodat ze door het strip_tags filter niet aangetast worden.
$text = preg_replace("(<img src=\"([a-z0-9_\-\.\/:]+?)\"></img>)", "[img]$1[/img]", $text);
$text = preg_replace("(<b>(.+?)</b>)", "[b]$1[/b]", $text);
$text = strip_tags($text);
$text = htmlentities($text, ENT_QUOTES);
$text = preg_replace('(\[img\]http://([a-z0-9_\-\.\/:]+?)\[/(?:img)?\])', '<img src="http://$1">', $text);
$text = preg_replace('(\[img\]([a-z0-9_\-\.\/:]+?)\[/(?:img)?\])', '<img src="http://$1">', $text);
$text = preg_replace('(\[b\](.+?)\[/b\])', '<b>$1</b>', $text);
return $text;
}
?>
function goedfilter1($text){
$text = stripslashes($text);
//transformeert eerst de "goede" tags naar hun bb versie, zodat ze door het strip_tags filter niet aangetast worden.
$text = preg_replace("(<img src=\"([a-z0-9_\-\.\/:]+?)\"></img>)", "[img]$1[/img]", $text);
$text = preg_replace("(<b>(.+?)</b>)", "[b]$1[/b]", $text);
$text = strip_tags($text);
$text = htmlentities($text, ENT_QUOTES);
$text = preg_replace('(\[img\]http://([a-z0-9_\-\.\/:]+?)\[/(?:img)?\])', '<img src="http://$1">', $text);
$text = preg_replace('(\[img\]([a-z0-9_\-\.\/:]+?)\[/(?:img)?\])', '<img src="http://$1">', $text);
$text = preg_replace('(\[b\](.+?)\[/b\])', '<b>$1</b>', $text);
return $text;
}
?>
maar deze code werkt helaas niet. :S
Als ik een mail wil versturen, krijg ik een blankgedeelte en als ik [b_]...[/ b] gebruik zonder die script, wordt het gewoon weergegeven als "[b_] tekst[/b ]".
Iemand een idee, hoe ik dit kan doen / oplossen?
Met vriendelijke groet.
Gewijzigd op 08/08/2013 20:47:16 door Marco Eilander
Waar in je mail script wordt dit aangeroepen?
Chris - op 08/08/2013 21:48:04:
Waar in je mail script wordt dit aangeroepen?
Ik ben nog niet zo heel goed in php, dus ik doe het op een wellicht erg kromme manier :
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
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
<?php
if (isset($_POST['verstuur'])){
$onderwerp = $_POST['onderwerp'];
$mail = $_POST['bericht'];
function bb($mail, $img = "true"){
$mail = stripslashes($mail);
$mail = strip_tags($mail);
$mail = htmlentities($mail, ENT_QUOTES);
$mail = nl2br($mail);
$mail = preg_replace('(\[b\](.+?)\[/b\])', '<strong>$1</strong>', $mail);
$mail = preg_replace('(\[img\]http://([a-z0-9_\-\.\/:]+?)\[/(?:img)?\])', '<img src="http://$1">', $mail);
$mail = preg_replace('(\[img\]([a-z0-9_\-\.\/:]+?)\[/(?:img)?\])', '<img src="http://$1">', $mail);
if ($onderwerp == ""){
echo "<div class='fout'>Je hebt geen onderwerp ingevuld!</div>";
$fout = "1";
}
if ($mail == ""){
echo "<div class='fout'>Je hebt geen bericht ingevuld!</div>";
$fout = "1";
}
if($fout != "1"){
echo "<div class='melding'>nieuwsbrief is verstuurd!</div>";
//------------
$sql = mysql_query("SELECT * FROM nieuwsbrief_abonnees");
while($row = mysql_fetch_assoc($sql)) {
//mail script
mail($row['email'], $onderwerp,
$mail, "From:" . "[email protected]");
//eind mail script
}
if(mysql_num_rows($sql) == 0) {
echo "";
}
//-------------
}else{
}
}
?>
if (isset($_POST['verstuur'])){
$onderwerp = $_POST['onderwerp'];
$mail = $_POST['bericht'];
function bb($mail, $img = "true"){
$mail = stripslashes($mail);
$mail = strip_tags($mail);
$mail = htmlentities($mail, ENT_QUOTES);
$mail = nl2br($mail);
$mail = preg_replace('(\[b\](.+?)\[/b\])', '<strong>$1</strong>', $mail);
$mail = preg_replace('(\[img\]http://([a-z0-9_\-\.\/:]+?)\[/(?:img)?\])', '<img src="http://$1">', $mail);
$mail = preg_replace('(\[img\]([a-z0-9_\-\.\/:]+?)\[/(?:img)?\])', '<img src="http://$1">', $mail);
if ($onderwerp == ""){
echo "<div class='fout'>Je hebt geen onderwerp ingevuld!</div>";
$fout = "1";
}
if ($mail == ""){
echo "<div class='fout'>Je hebt geen bericht ingevuld!</div>";
$fout = "1";
}
if($fout != "1"){
echo "<div class='melding'>nieuwsbrief is verstuurd!</div>";
//------------
$sql = mysql_query("SELECT * FROM nieuwsbrief_abonnees");
while($row = mysql_fetch_assoc($sql)) {
//mail script
mail($row['email'], $onderwerp,
$mail, "From:" . "[email protected]");
//eind mail script
}
if(mysql_num_rows($sql) == 0) {
echo "";
}
//-------------
}else{
}
}
?>
Je roept de functie nergens aan.
- Aar - op 08/08/2013 21:58:55:
Je roept de functie nergens aan.
Zou je mij er bij kunnen helpen?
Ik zou namelijk niet weten waar, en hoe ik het moet aanroepen.
Ik dacht dat het goed zou zijn, als ik alles had aangegeven bij "$mail = ... etc.".
Het is al een hele prestatie dat mij het mailen is gelukt. :P
Groeten,
Marco
ubb($mail)
- Aar - op 09/08/2013 00:17:17:
Over $mail in de mailfunctie:
ubb($mail)
ubb($mail)
Het werkt helaas nog niet zoals het moet.
Nu wordt [b_][/ b], veranderd naar <strong_></ strong>.
En in de mail zie je dan ook "<strong.." staan.
Gewijzigd op 09/08/2013 09:32:29 door Marco Eilander
Vergeet je HTMLheaders niet in je mail.
- Aar - op 09/08/2013 09:33:24:
Vergeet je HTMLheaders niet in je mail.
Ik heb in de function van bb, de $mail naar $bericht veranderd. En heb daarbij dit gemaakt:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
$mail = '
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<p>'.$bericht.'<p>
</body>
</html>
';
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<p>'.$bericht.'<p>
</body>
</html>
';
Ik dacht dat dit misschien zou werken, maar helaas.
ik dacht namelijk het volgende :
- $bericht = wat er in de mail moet komen, dus heb ik deze variable gebruikt in de bb functie.
- $mail = de complete mail met "$bericht" tussen de :
- Waar het script de mail verstuurd heb ik het zo gelaten :
Code (php)
1
2
3
4
2
3
4
//mail script
mail($row['email'], $onderwerp,
bb($mail), "From:" . "[email protected]");
//eind mail script
mail($row['email'], $onderwerp,
bb($mail), "From:" . "[email protected]");
//eind mail script
Gewijzigd op 09/08/2013 09:55:23 door Marco Eilander
De regex kloppen niet, vraag me niet waarom dan moeten je de hulp van Wouter J hebben.