Új hozzászólás Aktív témák
-
Sziasztok!
Kérdésem a következő lenne:
Lehetséges-e PHP-val, vagy akár JS-el lebontani egy szöveget?A példa a következő:
Van egy bemenet, ez legyen
<div id="input">Kecske</div>
. A kimenet pedig a következő:<div id="1">K</div>
<div id="2">e</div>
<div id="3">c</div>
<div id="4">s</div>
<div id="5">k</div>
<div id="6">e</div>Megvalósítható?
Előre is köszönöm a válaszokat!But who is watching the guardians?
-
Taci
addikt
Elvileg az str_split erre tökéletesen használható:
https://www.php.net/manual/en/function.str-split.php$str = "Hello Friend";
$arr1 = str_split($str);
print_r($arr1);
Array
(
[0] => H
[1] => e
[2] => l
[3] => l
[4] => o
[5] =>
[6] => F
[7] => r
[8] => i
[9] => e
[10] => n
[11] => d
)
-
-
Mike
veterán
nem akarok kötözködni de maga a string is indexelt tehát elég végigmenni rajta egy for-ral
$a = "almafa";
for($i=0;$i<strlen($a);$i++)
echo '<br>'.$a[$i];
Mr. Y arra figyelj, hogy ha UTF-8-at használsz akkor a multibyte extension legyen a php-ra felrakva, és strlen helyett mb_strlen-t kell használnii[ Szerkesztve ]
-
-
Taci
addikt
ha UTF-8-at használsz akkor a multibyte extension legyen a php-ra felrakva, és strlen helyett mb_strlen-t kell használnii
SQL mezőben a
VARCHAR(255)
-ben a 255 ugye karakterszámot jelöl? Ezek szerint ha azt akarom vizsgálni, hogy egy beadott sztring ne lehessen hosszabb ennél, akkor eddig rosszul használtam?if (strlen($title) > 254){
$title = substr_replace($title, "[...]",249);
}
Mert akkor ezek szerint az strlen a karakterek által elfoglalt byte-okat számolja, míg az mb_strlen magát a karakterek számát?
Tehát akkor ezek szerint nekem így kellene használnom:
if (mb_strlen($title) > 254){
$title = substr_replace($title, "[...]",249);
}
Köszi.
-
Mike
veterán
én sem
igen
ugye utf8 az 3 byte egy karakter
inkább úgy mondanám az strlen azt hiszi egy karakter egy byte
de végeredményben igenaz sql-n az utf8 varchar 255 karakerek száma
mostanában kezdek áttérni a json-re, főleg amit nem akarok indexelni, abban keresni
igaz a Mysql 8-asban van json támogatás, és azt hiszem indexelni is lehet az egyes kulcsokat
még a PDO-ba kellen natív json támogatás, hogy ne kelljen kézzel visszakódolni[ Szerkesztve ]
-
Taci
addikt
Köszönöm, már át is írtam, és valóban volt különbség.
VARCHAR(300)-ra van beállítva az egyik mező, és az egyik bejegyzésnél a korábbi "sima" strlen-es módszerrel szólt, hogy túl hosszú (~330), ezért levágta a túlcsorduló részt.
Azonban most megnéztem a forrássztringet, és valójában csak 298 karakter hosszú.
Átírtam a kódot mb_strlen-re, és így már nem bántotta, egyben volt kijelezve, hisz' elfért.Köszönöm.
-
Taci
addikt
Ezt találtam, de "csak" stackoverflow-ról így hirtelen:
"Values in VARCHAR columns are variable-length strings. The length can be specified as a value from 0 to 255 before MySQL 5.0.3, and 0 to 65,535 in 5.0.3 and later versions."Amúgy nekem gond nélkül kiírja amit eddig kellett, a 300-as határt csak azért húztam, mert utána egyszerűen már túl sok, rengeteg helyet elfoglal a szöveg.
Illetve ezt találtam még:
VARCHAR(65535)
However, note that the limit is lower if you use a multi-byte character set:
VARCHAR(21844) CHARACTER SET utf8For CHARSET=utf8mb4 use VARCHAR(16383)
[ Szerkesztve ]
-
Mike
veterán
na ez új info volt, mondjuk egy 65k-s mező mellett nincs másik, kivéve TEXT vagy BLOB
The length of a
CHAR
column is fixed to the length that you declare when you create the table. The length can be any value from 0 to 255. WhenCHAR
values are stored, they are right-padded with spaces to the specified length. WhenCHAR
values are retrieved, trailing spaces are removed unless thePAD_CHAR_TO_FULL_LENGTH
SQL mode is enabled.
Values inVARCHAR
columns are variable-length strings. The length can be specified as a value from 0 to 65,535. The effective maximum length of aVARCHAR
is subject to the maximum row size (65,535 bytes, which is shared among all columns) and the character set used. See Section 8.4.7, “Limits on Table Column Count and Row Size”. -
-
Taci
addikt
Amíg tesztfázisban vagyok, néha el kell indítanom kézzel is egy szkriptemet (ami az adatbázist tölti fel), de amúgy Cron Job-ként fut (jelenleg csak óránként).
Már többször kiszúrtam magammal, mert akkor indítottam el, amikor pont futott amúgy is, így az aktuális bejegyzések duplán kerültek az adatbázisba, aztán mire felkutattam, hogy mi is történt, rengeteg időt elpazaroltam.Arra gondoltam, hogy futás elején ellenőrzöm a logfájl (amibe minden bejegyzés részlete bekerül) időbélyegzőjét és fájlméretét, aztán várakoztatom a szkript futását 5 mp-re, újra ellenőrzöm, és ha eltérés van, akkor a másodjára elindított példányt exit()-tel leállítom, hogy ne legyen "duplázás".
$log_file_filesize_check_start = filesize($log_file_custom_path);
$log_file_filemtime_check_start = filemtime($log_file_custom_path);
sleep(5);
$log_file_filesize_check_end = filesize($log_file_custom_path);
$log_file_filemtime_check_end = filemtime($log_file_custom_path);
De akárhogy csinálom, hiába altatom 10 mp-ig is akár, a _start és _end értékek mindig megegyeznek, pedig direkt nézem a fájlt, folyamatosan ír bele az első példány, így kell, hogy változzon a fájlméret és az időbélyegzője is.
Lehetséges esetleg, hogy ezek az értékek (filesize, filemtime) csak akkor realizálódnak majd magán a fájlon, ha a szkript már "elengedte" (tehát ha a bele logoló szkript már befejezte a futását)?
Ki szeretném védeni a duplikált bejegyzéseket (amik azért jönnek létre, mert duplán fut a szkript, mert a második példány akkor indul el, amikor az első még fut).
Ha esetleg a logfájl adatainak elemzésével nem érhetek célt, akkor keresek mást, de most már érdekelne ez a dolog.
Köszi.
-
supercow
őstag
Induláskor egy ideiglenes fájlba írsz valamit pl “épp dolgozom”, a végén törlöd. Azt elég ellenőrizni hogy ez a fájl létezik-e. Akkor van gond amikor hiba miatt leáll a szkripted és nem töröl, akkor soha többé nem indul el megint
In nomine Pasta, et Fusilli, et Spaghetti Sancti. Ramen.
-
Taci
addikt
Nagyon nyakatekert módon, de végül így oldottam meg:
0) Az ellenörző funkcióval kezdődik a szkript (lejjebb részletesebben, a 3. ponttól)
1) Logolás kezdetekor beszúr egy szöveget (pl. "Logolás kezdete")
2) Logolás végén ismét egy szöveg (pl. "Logolás vége")
3) Megvizsgálja a log fájlban a "Logolás kezdete" és "Logolás vége" sztringet ismétlődéseit
4) Ha megegyeznek (pl. 2 - 2 db), akkor az azt jelenti, hogy el lett kezdve, és le is lett zárva (azaz már nem fut), tehát indulhat újra a kód futása a szükséges feladatokkal.
5) Ha különböznek, akkor összehasonlítom a log fájl időbélyegzőjét, illetve a jelenlegi időbélyegzőt.
6) Ha kevesebb, mint a beállított limit (10 perc), akkor a php error.log fájljába ír, hogy ne módosítsa a szkript log fálját, de mégis legyen infóm arról, hogy megállt, nem fut tovább, és lássam az okát.
7) Amint 10 perc fölött van a különbség, attól függően, hogy a "kezdete" vagy "vége" sztringekből van kevesebb, beszúrja a logba a megfelelő sztringet a megfelelő mennyiségben, kvázi helyre állítva a logot.
Aztán fut tovább a szkript a normál módon, a kezdete és vége sztringek úrja párban vannak, megtörtént az esetleges szükséges "karbantartás" (ha mondjuk nem futott volna végig a szkript, és a "vége" bejegyzést nem tette volna meg).Egyszerűbb ötletem nem volt, és ezt most egyelőre bolondbiztosnak látom.
5 percenként fut a szkript, ha esetleg nem végezne a következő futtatásig, akkor nem indul, majd csak az azutáni 5. percnél.
Ha pedig valamiért nem futna végig (pl. szerverhiba), és elrontaná a log fájlt (és ezzel az ellenőrzést), max 10 perc múlva helyrehozza az ellenőrzéses szükséges sztringeket.Remélem, jó lesz.
-
Taci
addikt
válasz pelyib #20569 üzenetére
Megcsináltam inkább így, ahogy már elsőre is mondtad, lényegesen egyszerűbb.
Futáskor készítek egy új fájlt (.running) ha még nincs. Ha van (és 10 percnél fiatalabb), akkor exit. Ha 10 percnél régebbi (beragadt), akkor törlés, újrakreálás, aztán a szkript tovább futtatása.
Szkript futása végén törlöm. -
Taci
addikt
Köszönöm, találtam sok cikket, fórumbejegyzést róla, amint a szolgáltatónál leszek, ki is próbálom, hogyan lesz a legjobb.
Azflock
paramétereit is megtaláltam (néhol "-n", máshol "-w 1" volt, nem volt tiszta, de így már értem):
[link]ha kézzel indítod írhatna más logba is, hivd paraméterrel
Ezt hogy érted? A kézzel indítást úgy értem, hogy magát a cron job-ot kézzel triggerelem.De így már nem piszkálom szerintem, a tesztfázisra így már rendben van, nem fog duplikálni.
Ésflock
-kal pedig ez a (korábban megírt) ellenörzős rész pedig nem fog már kelleni.Köszi a tippet.
-
Mike
veterán
szerver témában kérném a segítségetek, ebben annyira nem vagyok otthon:
adott egy nignx szerver, van rajta php-fpm
ez eddig ok
a /home alatt van az összes subdomain, én meg szeretném egy közös helyre tenni a funkció gyűjteményemet, amit minden subdomainből elérek
létrehoztam a home alatt egy common/php könyvtárakat
azt beletettem a php.ini-be az include pathba, ami látszik is a phpinfoban
ezzel együtt a test1.php-t nem látja a php (Failed opening 'test1.php' for inclusion)
próbáltam mindenféle ownert, groupot beállítani a mappára, nem sok sikerrel
illetve irásjogot adtam már others-nek is (permission 40777) de ennek sincs semmi hatása.vmi megoldás, mit basztam el, hagytam ki?
-
Taci
addikt
Hogyan tudom egy weblap (HTML) forráskódjában lévő meta tag-eket összegyűjteni?
Adott egy link, ennek megvan a tartalma.
$all_lines = file($feed_link);
Más processzek miatt végig megyek minden során.
foreach ($all_lines as $line_num => $line) {
}
Most szembe jött egy rakat olyan link, amik forráskódjában a számomra szükséges adatok meta tag-ek "mögött bujkálnak".
Egyetlen egy (nagyon hosszú) sor, amiben többször van ugyanaz a típusú bejegyzés egymás után (plusz még sok más is). Nekem az összes ilyen kellene:<meta name="article:tag" content="Fotó">
(és még sok ilyen egymás után egy sorban, más content-tel)
És nekem azarticle:tag
-ekcontent
jei kellenének (itt pl. a "Fotó"), az összes.Meg tudom szerezni az adatot sztringekkel operáló lépésekkel, de kacifántos, és teljesen biztos vagyok benne, hogy van erre gyorsabb és egyszerűbb mód is. Sőt, az is teljesen biztos, hogy én is használtam már, de most nem lelem.
Találtam ilyet: get_meta_tags, de nem ezt használtam.
Talán
getElementsByTagName
volt, de most már össze vagyok kutyulva.Köszi.
-
Taci
addikt
válasz pelyib #20579 üzenetére
Sajnos közbejött egy másik probléma, szóval erre majd később térek vissza.
A PHP error log tele van a következő bejegyzésekkel:
Invalid argument supplied for foreach()És ami nem tetszik neki:
$dynamic_variable = "fix_part_" . $changing_value;
foreach (${$dynamic_variable} as $value){
}
Nem igazán értem, miért nem jó ez neki? Már csak azért sem, mert:
- amúgy működik rendben
- a pár sorral lejjebb copy-paste (csak más értékekkel) hívást nem említi az error logban.Vagy így kellene hívni, kihagyva a köztes változót?
foreach (${"fix_part_" . $changing_value} as $value){
}
-
pelyib
tag
Nem iterable a value annak a valtozonak, esetleg egy type casting, de jobb lenne ha el se jutna oda a program.
foreach ((array)${$dynamic_variable} as $value){
Ellenorzesre: is_iterable
-
Sziasztok!
Keresek egy programot. Egy programozó programot. Olyasmit, amiben lehet HTML, PHP, JS, JSON, SQL és egyéb nyelveket is használni és beépített megjelenítő mezője van, tehát saját szervert csinál hozzá.
Amit jelenleg használok, az ilyen, csak továbbmennék.
Szeretném, ha össze lehetne kapcsolni a Webtárhelyemmel (ha ez lényeges, akkor a MediaCenter-nél vagyok) és az ottani fájlokat látja, nyitja meg és módosítja. Emellett ennek kompatibilisnek kellene lennie MAC OS rendszerrel és ha van rá mód, akkor Android-al is.Tud valaki ilyen szoftvert?
Előre is köszönöm!
But who is watching the guardians?
-
pelyib
tag
Phpstorm.
-Android, arra nincs.Pontosan mit értesz az alatt hogy "sajat szervert csinál"?
Tud webszervert inditani, amit aztán a szabadon választott böngészőben eléred, de ezt inkább a dockerre bíznám.Pluginozhato, valszeg mindenre van már amit keresel.
(IDE, integrated development environment a keresett szó )
-
válasz pelyib #20584 üzenetére
Régebben a dreamweaver-t használtam. Csak mióta felvásárolta az Adobe, moslékul drága lett.
Helyette keresek alternatívát.
Ennek a programnak beépített localhost nézete volt, nem igényelt külső böngészőt. Apache server-t meg megoldottam alprogrammal.But who is watching the guardians?
-
disy68
aktív tag
miért akarsz egy random böngészőt az IDE-be egy rendes böngésző helyett, amire a fejlesztett termék készül?
"Szeretném, ha össze lehetne kapcsolni a Webtárhelyemmel (ha ez lényeges, akkor a MediaCenter-nél vagyok) és az ottani fájlokat látja, nyitja meg és módosítja."
se verziókezelés, se tesztelés, se semmi?
“Yeah, well, you know, that’s just, like, your opinion, man.” — The Dude
-
válasz disy68 #20586 üzenetére
Nem erről van szó.
A dreamweaver-t úgy használtam, hogy lekérte a tárhelyről a fájlokat és dolgoztam velük. Élőben ment közben a tesztelés és ha végeztem, egyetlen kattintással visszatöltötte a változásokat. Azért választottam ezt a módszert, mert különböző helyeken külön gépekről dolgozok.
A rendes böngésző helyett részhez pedig annyit, hogy egy Chrome ablakot nyit meg, csak a programon belül. Tehát ugyan úgy működik, csak nem kell állandóan lefrissíteni.[ Szerkesztve ]
But who is watching the guardians?
-
pelyib
tag
"mert különböző helyeken külön gépekről dolgozok."
Erre lenne jo a verziokezelo (pl: Github, Bitbucket) amit disy68 is emlitett.
Ezt lehet egy HTML/JS topicban kene kerdezned. PHPStorm PHP, json, SQL-re tokeletes. HTML, JS is megy vele de hogy amit te keresel azt tamogatja azt en nem tudom.
Esetleg a VS Code -
-
-
-
pelyib
tag
A konkret protokol ismereteben relevansabb talalat is lehet.
[ Szerkesztve ]
-
-
Mike
veterán
használ valaki már 8-ast?
-
Mike
veterán
eyg órát szoptam azon, hogy valamiért nem hoz létre minden constanst egy include-olt file. párat létrehoz, de a többit az istennek nem. aztán eszembe jutott hogy van a path-en vmi maradvány, amiben van egy ugyanolyan nevü file B+ előrébb.
mindezt csak azért írom ide, mert gondoltam megkérdezem, nincs-e vmi tippetek[ Szerkesztve ]
-
Taci
addikt
Sziasztok!
RSS feed-ből (XML) dolgozom. Eddig semmi (ilyen jellegű) gond nem volt, viszont ma észrevettem a következő hibabejegyzést a PHP error logban:
DOMDocument::load(): Extra content at the end of the document in xml_linkje, line: 1Erre a sorra mutatva:
$xmlDoc->load($xml_linkje);
Utána még pár perc múlva láttam újra a szkript újbóli futtatásakor, azóta nem.
Sajnos nincs ráhatásom, hozott anyagból kell dolgoznom.A kérdéseim ezek lennének:
1) Lehetséges, hogy rosszul generálták le az XML-t, valami hibás bejegyzés (tag) lehetett benne?
Az első sort említi, ott ez van:<?xml version="1.0" encoding="UTF-8"?>
(Aztán lehet, amikor futott, nem ez volt, hanem valami elrontva benne.)2) Az ideális az lenne, ha tudnám javítani, de ugye mivel egy fájlt millió helyen el lehet rontani, így leszkriptelni egy javító funkciót nem fogok tudni, ami 100%-osan mindig működne.
Ezért arra gondoltam, az is elég lenne, ha hibásnak találja az XML-t (mint a fenti php error logos bejegyzésnél tette (DOMDocument::load(): Extra content at the end of the document), akkor simán csak hagyja ki a vele való műveleteket, aztán majd következő futásnál ellenőrzi újra, hátha addigra javítják.
Hogyan tudom ezt az ellenőrzést megcsinálni? Fogalmam sincs, mit kell ezt vizsgálni, hogy "el lehessen kapni" ezt a hibát még a szkriptemben, és szépen lekezelni.
Biztosan van rá mód, hisz' a PHP error logban is elég specifikusan szerepel.Nyilván rákerestem, ezt találtam, de inkább kérdezek ilyen dolgokban, amik számomra teljesen ismeretlenek:
XMLReader::isValidEz lenne az? Van esetleg még más ajánlásotok a témában, mire figyeljek?
Pl.: Van értelme lementeni ezeket a fájlokat előbb, és lokálból dolgozni velük? Ha a load() beolvassa, azt a pár percet már csak "kibírja" lokálban tárolás nélkül is, nem?Köszi.
Új hozzászólás Aktív témák
- Ryzen 9 5950X
- AirPods Max - Silver (Hibátlan és tökéletes állapot, tulajdonképpen új, pár napot volt használva)
- LEGJOBB ÁR! GAMER PC - RTX 3070 - Ryzen 5500 - 16GB DDR4 - 500GB Nvme SSD
- ÚJ Playstation 5 CFW képes (feltörhető), lemezes
- ÚJ Dell Vostro 3520 - 15.6" IPS 120Hz / i5-1235U / 8-16Gb DDR4 / 512Gb / HUN backlit / 3 ÉV GAR.
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: Ozeki Kft.
Város: Debrecen