Hei,
jos teen verkkokaupan ja muodostan siinä tilausnumerosta jäsennumeron:
<span><?php printf( __( 'Jäsennumero: %s', 'woocommerce-pdf-invoices' ), $this->order->get_order_number() ); ?></span>
Miten saan samaa numeroa hyödyntäen luotua viitenumeron ja tulostettua sen?
Mod. lisäsi kooditagit!
Googlettamalla voisi löytyä valmis php-funktio viitenumeron laskemiseen.
Itse ainakin jostain kerran sellaisen löysin ja jos muistan oikein niin Mureakuhasta löysin. Php:ssa siis viietumero on kokonaisluku mutta jos teen näin:
Niin tulee sellainen ongelma sitten vastaan, että (integer) PHP:ssa on lyhyempi kokonaisluku mitä viitenumero voi olla maksimissaan pituudeltaan. Ekä ole varma onko oikein koodata allaolvevasti:
Tässä kuitenkin yksi viitenumrolaskin-funktio Githubissa:
https://github.com/ninjami/viitenumerolaskuri/
Ohjelmointiputkastakin löytyy useampi epämääräinen viitenumerolaskuri PHP:llä ja yksi parempi Pythonilla – ja nyt myös upouudet PHP-koodit. Eli tämän jälkimmäisen vinkin koodia mukaillen:
<?php function viitenumero($alku, $ryhmittely = true) { # Poistetaan muut kuin numerot. $alku = preg_replace("/[^0-9]*/s", "", $alku); # Tarkastusmerkin laskenta. $summa = 0; $l = strlen($alku); for ($i = 0; $i < $l; ++$i) { $summa += substr($alku, -1 - $i, 1) * [7, 3, 1][$i % 3]; } $merkki = (10 - $summa % 10) % 10; $viite = $alku . $merkki; # Ryhmittely viiden numeron joukkoihin. if ($ryhmittely) { return strrev(trim(chunk_split(strrev($viite), 5, " "))); } return $viite; } $lasku = $this->order->get_order_number(); $viitenumero = viitenumero($lasku); ?> <span>Viitenumerosi: <?= $viitenumero ?></span>
walkout_, Mureakuhaan ohjaaminen ei nykyään paljon auta, kun Mureakuha sulkeutui vuosia sitten. Esittämiesi tyypinmuunnosten ideaa en tajua. Ensimmäinen muunnos rikkoo pitkät viitenumerot (sekä sellaiset, jotka on välilyönnillä ryhmitelty viiden numeron sarjoiksi, kuten kuuluu). Jälkimmäinen muunnos on yksinkertaisesti turha, koska muuttuja sisältää jo tekstiä. Jos ideana olisi suojautua esimerkiksi XSS-hyökkäyksiltä, htmlspecialchars-funktio auttaisi. Jos kuitenkin viitenumero tulee omasta lähteestä ja on tunnetusti turvallinen, sen voi tulostaa ihan suoraan.
Kiitos! Nämä auttoivat.
Aihe on jo aika vanha, joten et voi enää vastata siihen.