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.
$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).
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:
$BBkod = array("&" => "&",
"<" => "<",
">" => ">",
"[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:
$BBkod = array("&" => "&",
"<" => "<",
">" => ">",
"[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:
array('&', '<', '>', '[b]', ...)
- BlackY) Most már csak igazi funkcióvá kell alakítanunk.
function BBCode($bbtext)
{
$BBCode = array(
"&" => "&",
"<" => "<",
">" => ">",
"[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:
$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ő. :)
Harder
Profil
Korábbi hozzászólások (2)
A régi blogon érkezett hozzászólások archívuma. Új hozzászólást már nem lehet írni.
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.
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).
Van hozzáfűznivalód? Írj nekem közvetlenül.
Kapcsolat