Evo, opet mi nešto ne ide...
Imam datoteku datoteka.txt i ovaj kod:
<?php
$file = file(getcwd() . "/datoteka.txt");
foreach($file as $f) {echo substr($f,12,8) . " - " . substr($f,21) . "<br />"; }
?>
i echo umjesto:
00:00:27 - Linija 1
00:01:25 - Linija 2
00:04:30 - Linija 2
00:07:32 - Linija 3
Pokazuje ovo:
19 00:00 - 27 Linija 1
00:01:25 - Linija 2
00:04:30 - Linija 2
00:07:32 - Linija 3
Šta je ovo? >:D >:D >:D
Nije problem u substr, nego datoteka na početku ima "dodatnih znakova"... Nakon kaj ni vrag nije dal mira, ja to sve skinul idem probat napravit iconv text-a iz datoteke...
I evo prve linije :)
01-Aug-2019 00:00:27 Linija 1
Ali ako složiš kod ovak, sve je ok ;)
<?php
$file = file(getcwd() . "/datoteka.txt");
foreach ($file as $fKey => $f) {
$text = preg_replace('/[^a-zA-Z0-9\s-:]/', '', $f);
echo substr($text, 12, 8) . " - " . substr($text, 21) . "<br />";
}
?>
P.S. pazi samo na regex, ovaj trenutni izbacuje sve znakove koji nisu slova, brojke, razmak, ":" i "-"....
Probaj testirat naša slova (šđčćž) pa ih eventualno dodaš u regex ako ima potrebe....
Hvala Dario!
Neznam zašto se ovo dogada?? Kod je ovakav:
<?php
$inputString = file_get_contents('datoteka.txt');
echo $inputString; // Ovdje nema ovih znakova
$test1 = iconv('Windows-1250', 'UTF-8', $inputString);
echo $test1; // Ovdje nema ovih znakova
$pret = 'newdat.txt';
$fhh = fopen($pret, 'a') or die("Error");
//$stringUTF8 = "\xEF\xBB\xBF"; // koda za utf-8
//fwrite($fhh, $stringUTF8);
fwrite($fhh, $test1);
fclose($fhh);
?>
a kad sad echo newdat.txt su na početku ovi znakovi
Mislim da se tu na početku radi o nekakvom BOM (Byte Order Mark) zapisu, ali nisam 100% ziher....
Uglavnom ne vidiš znak jer nije namjenjen da ga vidiš, ali kad konvertiraš u drugu kodnu stranicu - ispliva van
OK, budem sa preg_replace. Nadam se, da ga skužim. Do sada ga nisam.
Hvala još jednom
Ako trebaš pomoć oko regex-a, javi :)
U privitku imaš cheat sheet (ako pomaže) :)
U stringu mora da ostane: a-z A-Z 0-9 , - ' : ć-Ć č-Č š-Š ž-Ž đ-Đ
Citat: erbi u 08. Kolovoz 2019, 15:21
U stringu mora da ostane: a-z A-Z 0-9 , - ' : ć-Ć č-Č š-Š ž-Ž đ-Đ
Onda samo izmjeni regex ovako i trebalo bi biti ok
$text = preg_replace("/[^a-zA-Z0-9\s-:šđč枊ĐČĆŽ,']/", '', $f);
Hvala Dario!
Ovo je bila moja greška, tako da sad radi i bez regex-a. Datoteka je imala na početku BOM. Negdje na netu sam čitao, da ako želiš utf8, mora da bude ovako:
$stringUTF8 = "\xEF\xBB\xBF"; // koda za utf-8
fwrite($fhh, $stringUTF8);
fwrite($fhh, $podacii);
fclose($fhh)
A sad sam dao ovako i radi:
//$stringUTF8 = "\xEF\xBB\xBF"; // koda za utf-8
//fwrite($fhh, $stringUTF8);
fwrite($fhh, $podaci);
fclose($fhh)
Citat: Dario u 08. Kolovoz 2019, 12:36
Mislim da se tu na početku radi o nekakvom BOM (Byte Order Mark) zapisu, ali nisam 100% ziher....
Znači ipak je trebalo samo BOM maknut/parse-at :)