Autor Zpráva
Ricky4852
Profil
Dobrý deň,

nevedel som vymyslieť lepší titulok, takže sa ospravedlňujem, skúsim sem hodiť skript a potom vysvetlím, o čo sa snažím:

    $prikaz['/okno']=array("/o","/ok","/okn","/okno");
    $prikaz['/obed']=array("/ob","/obe","/obed");
    $prikaz['/dvere']=array("/d","/dv","/dve","/dver","/dvere");

no, ide o to, že užívateľ píše do "chatu" príkazy, typu:

/okno ahoj
/okno ako sa mas?


je problém v tom, že chcem aby príkazy fungovali aj v skratkách, napríklad:

/o ahoj
/okn ako sa mas?



Vyššie som dal do array $prikaz['/okno'] všetky možné príkazy, ktoré by mal server prijať (/o, /ok, /okn, /okno), a zapamätať si ich ako jeden oficiálny príkaz /okno.
Takže potrebujem funkciu, ktorá napríklad z premennej $napis = "/ok" by mala spraviť príkaz "/okno"
Z premennej "/o" by mal spraviť príkaz "/okno"
Z premennej "/ob" by mal spraviť príkaz "/obed"
Z premennej "/dver" by mal spraviť príkaz "/dvere"


A tak ďalej, snáď ma dobre chápete, a dúfam že mi s tým pomôžete, ďakujem
Keeehi
Profil
Takže ti jde o to, aby když máš v proměnné text z chatu a na začátku je zkratka, tak aby ji to nahradilo za celý výraz?
function rozsir_zkratky($text) {
    return preg_replace_callback(
        '~^/[a-zA-Z]+~',
        create_function(
            '$matches',
            '$prepis = array("/o" => "/okno", "/ok" => "/okno", "/okn" => "/okno", "/okno" => "/okno",
                             "/ob" => "/obed", "/obe" => "/obed", "/obed" => "/obed",
                             "/d" => "/dvere", "/dv" => "/dvere", "/dve" => "/dvere", "/dver" => "/dvere", "/dvere" => "/dvere");
             return isset($prepis[$matches[0]]) ? $prepis[$matches[0]] : $matches[0];'
        ),
        $text
    );
}


$vstup = "/ok ako sa mas?";

$vystup = rozsir_zkratky($vstup)

// $vystup == " /okno ako sa mas?";
Ricky4852
Profil
Veľká vďaka :) funguje to

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: