Zadejte hledaný výraz...

PHP vyhledat řádek

zezmen
verified
rating uzivatele
(39 hodnocení)
2. 9. 2019 22:10:22
Nějak mi to už nemyslí, ale potřebuji:
1. otevřít soubor
2. vyhledat řádek (podle části textu)
3. celý nalezený řádek změnit novým textem
(ne jenom část,ale celý řádek)
4. uložit soubor
Díky
2. 9. 2019 22:10:22
https://webtrh.cz/diskuse/php-vyhledat-radek/#reply1414060
TomasX
verified
rating uzivatele
(4 hodnocení)
2. 9. 2019 23:55:48
a musíš to být v php? V linuxu je na to třeba nástroj "sed".
V php to bude složitější, záleží jak ten soubor je velký, z hlavy by mohlo fungovat něco takovéhoto:
$obsah = file('cesta_k_souboru.txt');
function nahrad_radek($radek) {
$co_hledat="část řádku";
$cim_nahradit="nový obsah pro řádek";
if (stristr($radek, $co_hledat)) {
return "$cim_nahraditn";
}
return $radek;
}
$novy_obsah = array_map('nahrad_radek',$obsah);
file_put_contents('cesta_k_novemu_souboru.txt', implode('', $novy_obsah));
(Nezkoušel jsem to, psáno z hlavy). Každopádně cest jak toho docílit je spousta, tohle bude paměťově a výkonově velice náročné na velké soubory, u malých se to ztratí. Lepší ale na to použít specializovaný nástroj, třeba ten sed. Samozřejmě poté také záleží na kódování souboru a dalších maličkostech, lepší by bylo, kdybys sem hodil příklad.
2. 9. 2019 23:55:48
https://webtrh.cz/diskuse/php-vyhledat-radek/#reply1414059
TomasX
verified
rating uzivatele
(4 hodnocení)
2. 9. 2019 23:59:07
rychlejší variantu poradil google https://www.linuxquestions.org/questions/programming-9/php-read-file-line-by-line-and-change-a-specific-line-523519/
2. 9. 2019 23:59:07
https://webtrh.cz/diskuse/php-vyhledat-radek/#reply1414058
zezmen
verified
rating uzivatele
(39 hodnocení)
3. 9. 2019 07:27:08
Děkuji.
3. 9. 2019 07:27:08
https://webtrh.cz/diskuse/php-vyhledat-radek/#reply1414057
Jan Kuthan
verified
rating uzivatele
(48 hodnocení)
3. 9. 2019 10:07:16
3. 9. 2019 10:07:16
https://webtrh.cz/diskuse/php-vyhledat-radek/#reply1414056
TomasX
verified
rating uzivatele
(4 hodnocení)
3. 9. 2019 10:13:28
Napsal kdosiodjinud;1542260
tohle ti ale najde jen řádky, které odpovídají předpisu, již ti ale neumožní je změnit, nevíš ani jejich pozici v textu (to bys musel přihodit flag PREG_OFFSET_CAPTURE) a ideálně to co hledáš escapovat přes preg_quote("word", "/"), jinak to bude házet syntax errory.
3. 9. 2019 10:13:28
https://webtrh.cz/diskuse/php-vyhledat-radek/#reply1414055
crs
verified
rating uzivatele
(1 hodnocení)
3. 9. 2019 15:29:06
Musí-li to být v PHP a je-li zdrojový soubor 'plain text' (a ne přehnaně velký, do desetitisíců řádků)...
$lines = file($filename);
foreach($lines as $i => $line) {
preg_replace($pattern, $replacement, $lines, $limit);
}
file_put_contents($filename, implode("n", $lines));
3. 9. 2019 15:29:06
https://webtrh.cz/diskuse/php-vyhledat-radek/#reply1414054
ne
verified
rating uzivatele
(22 hodnocení)
3. 9. 2019 16:59:49
ak mozem, upravim podla zadania:
3. 9. 2019 16:59:49
https://webtrh.cz/diskuse/php-vyhledat-radek/#reply1414053
TomasX
verified
rating uzivatele
(4 hodnocení)
3. 9. 2019 17:06:47
Napsal ne;1542342
ak mozem, upravim podla zadania:
drobná poznámka, funkce strpos zohledňuje velikost písmen, proto jsem ve svém kódu volil funkci stristr. Je otázka co je vhodnější varianta :)
3. 9. 2019 17:06:47
https://webtrh.cz/diskuse/php-vyhledat-radek/#reply1414052
crs
verified
rating uzivatele
(1 hodnocení)
3. 9. 2019 17:44:23
Btw. nezkoušel jsem ten kód - možná bych ještě otestoval, jaké zakončení řádků má ten soubor - někdy končí znakem #13, někdy #10, někdy jsou oba. Podle toho upravit $line, nebo implode().
3. 9. 2019 17:44:23
https://webtrh.cz/diskuse/php-vyhledat-radek/#reply1414051
zezmen
verified
rating uzivatele
(39 hodnocení)
3. 9. 2019 18:18:23
Děkuji všem.
Jde o klasický textový soubory o max. 300 řádcích kódu.
Vyhledávat budu podle MD5 textu.
Takže bych soubor načetl klidně do array rozdělené podle #13.
Pak by se mohlo použít při nalezení řádku např. 4
$line = nový text.
3. 9. 2019 18:18:23
https://webtrh.cz/diskuse/php-vyhledat-radek/#reply1414050
ne
verified
rating uzivatele
(22 hodnocení)
3. 9. 2019 21:24:28
Napsal TomášX;1542344
drobná poznámka, funkce strpos zohledňuje velikost písmen, proto jsem ve svém kódu volil funkci stristr. Je otázka co je vhodnější varianta :)
case insensitive je lepsia fc. stripos :)
3. 9. 2019 21:24:28
https://webtrh.cz/diskuse/php-vyhledat-radek/#reply1414049
Pro odpověď se přihlašte.
Přihlásit