webForumDet fria alternativet

BBkod [artikel]*rubrik*[/artikel]

PHP

3 svar · 877 visningar · startad av Guldstrand

Medlem sedan juli 20041 271 inlägg
Frågan#1

Jag skulle vilja lägga till en forum-tagg till en liten bbkod-funktion som jag har, men vet inte riktigt hur jag ska lösa det. :r

Taggen jag vill ha, är [artikel]*rubrik*[/artikel].
Alltså rubriken skall eftersökas i mysql, och sedan ska rubrik + länk till artikeln visas.

$s = preg_replace(
	    "/\[artikel\]\s*((\s|.)+?)\s*\[\/artikel\]\s*/i",
	    "<blockquote><p><b>Artikel:</b><br />\\1</p></blockquote>", $s);

Hur gör jag nu en sökning efter "rubriken" i mysql? :x
Jag var naiv nog att tro att jag bara kunde köra...

SELECT rubrik FROM 'tabell' WHERE rubrik LIKE '%\\1%'

..men det gick inte så bra. Hahaha... :stud

Medlem sedan jan. 2005953 inlägg
#2

Kolla på funktionen preg_replace_callback, alternativt så kan du använda modifieraren e för att anropa en funktion som gör uppslaget mot MySQL och returnerar en sträng med länk.

Medlem sedan juli 20041 271 inlägg
#3

Jag har tittat lite på functionen, "preg_replace_callback", men förstår tyvärr inte hur och var jag ska lägga hämtningen från mysql. :(

Medlem sedan jan. 2005953 inlägg
#4

Jag ger dig ett generellt exempel på de två metoderna, så får du anpassa det efter dina behov ;)

<?php
/*
    minFunktion() används tillsammans med preg_replace_callback()
    Argumentet $matches är en array
*/
function minFunktion($matches) {
    return strtoupper($matches[1]);
}

/*
    minFunktion2() används tillsammans med preg_replace() och flaggan e
    Argumentet $what är en sträng
*/
function minFunktion2($what) {
    return strtoupper($what);
}

echo preg_replace_callback('#\[upper](.*?)\[/upper]#', 'minFunktion', 'abc [upper]abc[/upper]');

echo '<hr>';

echo preg_replace('#\[upper](.*?)\[/upper]#e', 'minFunktion2("$1")', 'abc [upper]abc[/upper]');
258 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
117 ms — ändringar (db)