Morten Forsker
02. juni 2020 - 13:42 Der er 4 kommentarer

Søg og erstat ord med preg_replace, mit gennemløb virker ikke på teksten

Hej Jeg har et problem med preg_replace eller tror ikke det er den men en del i min kode der går at den ikke køre alle mine arrays igennem, så tekten bliver ændre alle de steder hvor jeg har et replace ord.
Den finder kun et ord i teksten og det er det første der bliver ændret så koden virker der.

Koden:

global $product;
        $content = [];
        $patterns1 = [];
        $replacements1 = [];
        $patterns = [];
    if (($handle = fopen("https://teenstyle.se/wp-content/plugins/teenstyle-word-replacer/Mappe1.CSV", "r")) !== FALSE) {
        while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {

            $comma_separated = str_replace(';', ', ', $data);
            $mapArray = array_map('utf8_encode', $comma_separated);
            $arrayTostring = implode(', ', $mapArray);

            $stringToArray = explode(', ', $arrayTostring);

            $country = $stringToArray[0];
            $orginalWord = $stringToArray[1];
            $replaceWord = $stringToArray[2];

            $product_full_description = $product->get_description();


            $patterns[] = $orginalWord;
            $replacements[] = $replaceWord;




            foreach (array_combine($patterns, $replacements) as $patterns2 => $replacements2) {

                $patterns1[] = "/".$patterns2."/";
                $replacements1[] = $replacements2;

                $content[] = preg_replace($patterns1, $replacements1, $product_full_description);

            }
            return implode("", $content);
        }

    }
    fclose($handle);

}

Med venlig hilsen
Morten
Morten Forsker
02. juni 2020 - 13:45 #1
Er der nogle der kan slette link eller kan jeg selv gøre det?
Jan Seniormester
02. juni 2020 - 14:06 #2
det er fordi din while sætning kun er true 1 gang
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {

når den har været true, og erstattet teksten, skal du nulstille den til false og køre videre.
Slater Ekspert
02. juni 2020 - 14:32 #3
Der er intet galt med løkken. $data bliver sat til non-false for hver gang af fgetcsv().

Men jeg må indrømme jeg ikke helt forstår spørgsmålet, og det er svært at teste selv, da vi ikke ved hvad $product->get_description(); gør.

Hvorfor bruger du overhovedet preg_replace i stedet for str_replace, når det kun er tekster der skal erstattes og ikke regex? Kan du evt. forklare problemet lidt bedre?
Morten Forsker
02. juni 2020 - 14:37 #4
$product->get_description(); er en action i woo wordpress.
Som henter teksten og derfor $product_full_description = $product->get_description();
Så jeg kan sætte den der  $content[] = preg_replace($patterns1, $replacements1, $product_full_description);

Fordi jeg bruger preg_replace er fordi str_replace erstatter også feks. mørkegrå til darkgrå feks. den skal kun ændre det der står helt præcist. Så Hvis der står grå skal den kun ændre det, og ikke i andre ord.
Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links

Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester





Premium
Huawei ville have skriftlig garanti mod udelukkelse på det danske marked - Udenrigsministeriet afviste
Kinesiske Huawei har anmodet om en skriftlig garanti mod udelukkelse på det danske marked. Anmodningen blev afvist af udenrigsministeriet, hvor argumentet lød, at det ikke var "kutyme" at give specifikke selskaber skriftlige tilkendegivelser om, hvorvidt de er velkomne til at gøre investeringer i Danmark.
Computerworld
Kinesiske TikTok lukker ned i Hong Kong efter indførelse af censur-lov
TikToks kinesiske moderselskab Bytedance lukker for adgang til den populære app i Hong Kong. Til gengæld vil en kinesisk version af appen fortsat være tilgængelig i Hong Kong
CIO
Torben Fabrin og Arla måtte på få dage omstille hele deres produktion da coronaen ramte
Da coronaen ramte verden måtte mejerigiganten Arla på få dage omstille sin produktion. Samtidig voksede salget massivt til supermarkeder mens institutioner og restauranter gik næsten i stå. Hør hvordan Arla kom gennem krisen ved blandt andet være klar med realtime analytics.
Job & Karriere
På jagt efter et it-job i Jylland? Her er 10 stillinger fra Aabenraa til Aalborg, der ledige netop nu
Vi har fundet en række spændende stillinger til dig, der jagter et it-job. Her kan du vælge og vrage mellem ledige stillinger lige fra Aabenraa til Aalborg.
White paper
Sådan opbevarer du effektivt og sikkert dine data – også med hybrid cloud
Cloud er her der og alle vegne. Men mange organisationer foretrækker en mere blandet tilgang, hvor dele af virksomhedens workload og it-miljøer sendes i clouden, mens andre dele placeres i andre og ofte lokale datacentre. Det stiller ofte mange forskelligartede krav til behovet for lokal storage. Men med IBM FlashSystem kan du konsolidere dit storage-behov og reducere kompleksiteten. Samtidig er FlashSystem all-flash og hybrid-løsninger bygget på et standardiseret sæt af værktøjer og APIs, som giver dig adgang til enterprise-løsninger uanset størrelsen på din organisation. I dette whitepaper fra Atea og IBM kan du læse om IBMs storeløsninger og de yderligere fordele som du kan opnå med dem.