joomla_antivirus_logo

Autor Tema: substr() ne radi ispravno ...  (Posjeta: 218 )

0 Članova i 1 Gost pregledava ovu temu.

erbi

  • Ozbiljan forumaš
  • ****
  • Postova: 398
  • Karma: 1
    • Profil
    • Radio Tomi
substr() ne radi ispravno ...
« : 07. Kolovoz 2019, 16:30 »
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

Dario

  • Global Moderator
  • *****
  • Postova: 1.139
  • Karma: 36
  • Web/Joomla Developer
    • Profil
    • dBlaze
Odg: substr() ne radi ispravno ...
« Odgovori #1 : 08. Kolovoz 2019, 09:59 »
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($text128) . " - " substr($text21) . "<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....
« Zadnja izmjena: 08. Kolovoz 2019, 10:04 Dario »
---
Molim da mi ne šaljete privatne poruke sa zahtjevima za pomoć, takve poruke ignoriram - zato služi forum :)
2b || !2b; this.question();
http://www.dblaze.eu

erbi

  • Ozbiljan forumaš
  • ****
  • Postova: 398
  • Karma: 1
    • Profil
    • Radio Tomi
Odg: substr() ne radi ispravno ...
« Odgovori #2 : 08. Kolovoz 2019, 12:31 »
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

Dario

  • Global Moderator
  • *****
  • Postova: 1.139
  • Karma: 36
  • Web/Joomla Developer
    • Profil
    • dBlaze
Odg: substr() ne radi ispravno ...
« Odgovori #3 : 08. Kolovoz 2019, 12:36 »
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
---
Molim da mi ne šaljete privatne poruke sa zahtjevima za pomoć, takve poruke ignoriram - zato služi forum :)
2b || !2b; this.question();
http://www.dblaze.eu

erbi

  • Ozbiljan forumaš
  • ****
  • Postova: 398
  • Karma: 1
    • Profil
    • Radio Tomi
Odg: substr() ne radi ispravno ...
« Odgovori #4 : 08. Kolovoz 2019, 12:40 »
OK, budem sa preg_replace. Nadam se, da ga skužim. Do sada ga nisam.

Hvala još jednom

Dario

  • Global Moderator
  • *****
  • Postova: 1.139
  • Karma: 36
  • Web/Joomla Developer
    • Profil
    • dBlaze
Odg: substr() ne radi ispravno ...
« Odgovori #5 : 08. Kolovoz 2019, 12:55 »
Ako trebaš pomoć oko regex-a, javi :)

U privitku imaš cheat sheet (ako pomaže) :)
---
Molim da mi ne šaljete privatne poruke sa zahtjevima za pomoć, takve poruke ignoriram - zato služi forum :)
2b || !2b; this.question();
http://www.dblaze.eu

erbi

  • Ozbiljan forumaš
  • ****
  • Postova: 398
  • Karma: 1
    • Profil
    • Radio Tomi
Odg: substr() ne radi ispravno ...
« Odgovori #6 : 08. Kolovoz 2019, 15:21 »
U stringu mora da ostane: a-z A-Z 0-9 , - ' : ć-Ć č-Č š-Š ž-Ž  đ-Đ

Dario

  • Global Moderator
  • *****
  • Postova: 1.139
  • Karma: 36
  • Web/Joomla Developer
    • Profil
    • dBlaze
Odg: substr() ne radi ispravno ...
« Odgovori #7 : 13. Kolovoz 2019, 13:07 »
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);
---
Molim da mi ne šaljete privatne poruke sa zahtjevima za pomoć, takve poruke ignoriram - zato služi forum :)
2b || !2b; this.question();
http://www.dblaze.eu

erbi

  • Ozbiljan forumaš
  • ****
  • Postova: 398
  • Karma: 1
    • Profil
    • Radio Tomi
Odg: substr() ne radi ispravno ...
« Odgovori #8 : 14. Kolovoz 2019, 08:32 »
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)

Dario

  • Global Moderator
  • *****
  • Postova: 1.139
  • Karma: 36
  • Web/Joomla Developer
    • Profil
    • dBlaze
Odg: substr() ne radi ispravno ...
« Odgovori #9 : 14. Kolovoz 2019, 10:34 »
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 :)
---
Molim da mi ne šaljete privatne poruke sa zahtjevima za pomoć, takve poruke ignoriram - zato služi forum :)
2b || !2b; this.question();
http://www.dblaze.eu

 

joomla_antivirus_logo
anything