BBkód funkció készítése


Ezen tutoriálom segítségével megtanulhatja mindenki a következő BBkódokat előállítani:

  • Vastag szöveg
  • Aláhúzott szöveg
  • Dőlt szöveg
  • Képek
  • HTML kód kilövése
  • Sor törések
  • Kód dobozok
  • & lecserélése &-ra, hogy a kód valid legyen.

A kód a tömbökre és az str_replace() függvényre épít. (Megjegyzés: php 5 környezetben érdemes jelen esetben az str_ireplace-t használni, így a [I]Szöveg[/I] is dőlt betűs lesz – BlackY). A töbök nagyon egyszerűek. Egyszerre több kulcsot és értéket tartalmazhatnak.

1
$array = array("kulcs" => "érték");

Az str_replace() egy string-ben egy mintát cserél ki egy másikra. (Megyjegyzés: A minták és a “csereszövegek” egyaránt lehetneknek tömbökben is, tehát nem csak egy mintát cserél ki – BlackY).

1
string str_replace( mixed Minta, mixed Cserendo, string Szoveg);

Most össze kell állítanunk egy listát arról, hogy miket akarunk lecserélni, és hogy mikre. Így kell kinéznie a listádnak:

1
2
3
4
5
6
7
8
9
10
11
$BBkod = array("&" => "&",
"<" => "&lt;",
">" => "&gt;",
"[b]" => "<b>",
"[/b]" => "</b>",
"[i]" => "<i>",
"[/i]" => "</i>",
"[u]" => "<u>",
"[/u]" => "</u>",
"[img]" => "<img src='",
"[/img]" => "'>");

Itt úgy van, hogy ami a bal oldalon van azt szeretné kicserélni a jobboldalra. Ám most még csak a kulcsok vannak meg és az értékek. Most az str_replace() segítségét kell hívnunk, így:

1
2
3
4
5
6
7
8
9
10
11
12
$BBkod = array("&" => "&amp;",
"<" => "&lt;",
">" => "&gt;",
"[b]" => "<b>",
"[/b]" => "</b>",
"[i]" => "<i>",
"[/i]" => "</i>",
"[u]" => "<u>",
"[/u]" => "</u>",
"[img]" => "<img src='",
"[/img]" => "'>");
$bbtext = str_replace(array_keys($BBkod), $BBkod, $bbtext);

(Megjegyzés: Az array_keys függvény egy tömbből az kulcsokat gyűjti ki egy tömbbe, ahol már értékként szerepelnek. A visszaadott tömbje jelen esetben így nézhet ki:

1
array('&', '<', '>', '[b]', ...)

- BlackY)

Most már csak igazi funkcióvá kell alakítanunk.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function BBCode($bbtext)
	{
	$BBCode = array(
	"&" => "&amp;",
		"<" => "&lt;",
		">" => "&gt;",
		"[b]" => "<b>",
		"[/b]" => "</b>",
		"[i]" => "<i>",
		"[/i]" => "</i>",
		"[u]" => "<u>",
		"[/u]" => "</u>",
		"[img]" => "<img src='",
		"[/img]" => "'>"
		);
 
	$bbtext = str_replace(array_keys($BBCode), $BBCode, $bbtext);
	return $bbtext;
	}

Ki is próbálhatjuk például a következő kóddal:

1
2
$bbtext= "[b]Ez egy vastag szöveg[/b]";
print BBCode($bbtext);

Ezzel készen is volnánk. Remélem mindenkinek sikerülni fog, egyszerű volt, és érthető. :)

Kapcsolódó bejegyzések:
  • Ebben a tutorialban bemutatok egy BB kód értelmezőt, valamint annak a használatát. Remélem hasznos lesz számotokra. A kódot csak kimásolod innen egy fájlba és gy …

  • Bizonyára sokszor megesett már veletek is, hogy egy végtelen nagyságú tömböt objektummá szerettetek volna alakítani.  Ez a megoldás rendkívül hasznos,  s gyakran …

  • A PHP nyelvről szóló sorozatunknak ebben a részében a tömböket fogom bemutatni. A PHP tömb vagy eredeti nevén array egy úgynevezett összetett változó típus. Az ö …

  • Személy szerint már sokszor jártam úgy, hogy egy eredményt, ami várhatóan egy tömb volt be kellett járja. Ilyen esetekben általában meg szoktuk vizsgálni, hogy a …

  • A következőkben egy olyan, általam írt PHP-s függvényt szeretnék bemutatni, amellyel könnyedén és egyszerűen készíthetünk magunknak olyan oldalt, amely támogatja …

A cikket beküldte: Jackson ()

2 hozzászólás

  1. Semmu says:

    olyat nem lehet csinálni, hogy magától cseréljen ki mindent egy oldalon belül? pl minden :) egy smileyre, de úgy, hogy nem kellene változóban eltárolni a szöveget…nekem olyan kellene.

  2. Fefy says:

    Semmu: ezt a “nem kellene változóban eltárolni…” mondatodat nem teljesen értem.
    De kb két lehetséges dologot szűrtem ki belőle:

    1. magát a szöveget, ami tartalmazza az ilyeneket: :), :D, stb nem akarod változóban tárolni: ebben az esetben javascriptes megoldás kell. (nem sok értelmét látom egy dinamikus oldalnál, habár vannak esetek, amikor jó lehet…)

    2. a smiley-k kódjait nem akarod letárolni: ez is megoldható, de olyan felesleges terhelést okoz, hogy semmi értelme nem lenne (Valamint a kivitelezése is nagyon bonyolult).
    Habár van egy kímélő megoldás is: A smiley-kat a php beolvassa egy tömbbe (pontosabban a nevüket), majd ezt a tömböt veszi viszonyítási alapnak (tehát van egy sad.gif fájlod, amiből a php csinál egy sad indexű sad.gif tartalmú bejegyzést a tömbben). Ennek viszont meg van az a hátránya, hogy a fájlnévben nem lehet speciális karaktereket használni, így korlátozott a használata.

    Remélem a két lehetőség közül valamelyik a te kérdésedre a válasz (részben, mivel forráskódot nem adtam).

Szólj hozzá
a BBkód funkció készítése c. bejegyzéshez

- Engedélyezett HTML elemek: <a> <em> <strong> <ul> <ol> <li>
- Forráskód beküldéséhez tedd a kódot ezek közé: <pre lang="php" line="1">Kódrészlet helye itt</pre>