Autor Zpráva
radas
Profil *
Zdravím,
potřeboval bych nějak nasměrovat jak udělat takový to skript.

//prvotni řetězec
$string='chodim na tuto diskusi';
//upraveny řetězec řetězec
$string2='chodim rád na tuto diskusi';

požadovaný výsledek, který potřebuji získat :

chodim rád na tuto diskusi.
Jan Tvrdík
Profil
radas:
A jak to chceš získat? Nahrazením „chodím“ za „chodím rád“? Doplněním „rád“ za první slovo? Nebo jinak?
radas
Profil *
potřeboval bych jen zvýraznit ty změny z druhého stringu vůči prvnímu .. žadné nahrazovaní, žadné doplněni ...
Jan Tvrdík
Profil
radas:
Moje chyba, špatně jsem si přečetl tvůj první příspěvek.

Jaké druhy změn mohou nastat? Vždy se přidává nějaké celé slovo? Vždy se přidává nějaký řetězec? Nebo se může i něco z původního řetězce smazat?
radas
Profil *
vpořádku nic se neděje...

právě že se můžou upravovat oba stringy - přidat, upravi, smazat slova

tak jak umi f-ce similar_text vypočitat rozdíl v řetězcích tak toho samého chci dosáhnout i ja, ale s tim že se rozdíly zvýraní...
Jan Tvrdík
Profil
radas:
Zkus použít třeba PHP inline diff nebo Horde_Text_Diff z http://pear.horde.org/.
SeparateSK
Profil
Skús:
<?php
    function vyznac($prvy,$druhy){
        $prvyEx=array();
        $druhyEx=array();
        $prvyEx=explode(" ",$prvy);
        $druhyEx=explode(" ",$druhy);
        $prvySlov=count($prvyEx);
        $druhySlov=count($druhyEx);
        $po=0;
        $text="";
        $zI=0;
        ($prvySlov>=$druhySlov)?$po=$prvySlov:$po=$druhySlov;
        for($i=0;$i<$po;$i++){
            if(!in_array($prvyEx[$zI],$druhyEx)){
                if($prvyEx[$zI]!="")$text.="<b>$prvyEx[$zI]</b> ";    
                    else {
                        $rozdiel=$prvySlov-$druhySlov;
                        if($rozdiel>0)$rozdiel*=(-1);
                        $zI=$po+$rozdiel-1;
                        $text.="$prvyEx[$zI]";
                    }
            } elseif(!in_array($druhyEx[$zI],$prvyEx)){
                if($druhyEx[$zI]!="")$text.="<b>$druhyEx[$zI]</b> ";    
                else {
                        $rozdiel=$druhySlov-$prvySlov;
                        if($rozdiel>0)$rozdiel*=(-1);
                        $zI=$po+$rozdiel-1;
                        $text.="$druhyEx[$zI]";
                }
            }else $text.=$druhyEx[$zI]." ";
            $zI+=1;
        }
        return $text;
    }
    echo vyznac("chodim na tuto diskusiu","chodim rad na tuto diskusiu");
?>
Je to iba o tom, či sa dané slovo nachádza v druhom reťazci, a ak nie, tak ho zvýrazní
Str4wberry
Profil
Když jsem před nějakým časem hledal hotovou funkci pro zobrazení rozdílů v textu, tak se mi nejvíce osvědčilo (přesněji řečeno nejméně neosvědčilo) toto.
radas
Profil *
SeparateSK:
tak mě to nějak napadlo...

jinak všem děkuji za navrhy.. bubu s tim laborovat snad se něčeho dočkám připadně to tu zveřejnim pokud to bude fungovat tak jak potřebuji...

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: