Inlocuire sir in text din fisier
Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
-
steell
- Mesaje:190
Inlocuire sir in text din fisier
Salut
Nu stiu care e problema la acest script
Cod: Selectaţi tot
$numedis = $_POST['nume'];
$ardata = file('uploads.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$nr = count($ardata);
for ($a=0; $a<$nr; $a++) {
$ia = file_get_contents($numedis."/".$numedis.".txt");
$rr = str_ireplace($ardata[$a],'<img src="upload/'.$ardata[$a].'" width="100" height="100" />', $ia);
$p = file_put_contents($numedis."/".$numedis.".txt", $rr);
}
Fisierul "uploads.txt" contine:
Sr trebui ca in fiserul:
sa inlocuiasca unde scrie imagine.jpg ... cu <img src ....
Dar nu inlocuieste, ramane tot imagine.jpg .
MarPlo
Mesaje:4343
Salut
Daca vrei sa modifici datele din:
$numedis."/".$numedis.".txt" in functie de cele din fisierul "uploads.txt", nu are rost sa aplici file_get_contents() si file_put_contents() in codul din for(); ca asa preia si rescrie fisierul la fiecare parcurgere a instructiunii.
Preia textul din acel fisier inainte de for(), parcurgi si inlocuiesti sirul, apoi, dupa for() rescrii fisierul.
O alta gresala, $rr nu contine si pastreaza datele modificate, ci e refacut la fiecare parcurgere for().
Incearca asa:
Cod: Selectaţi tot
// daca sunt date prin POST 'nume'
if(isset($_POST['nume'])) {
$numedis = strip_tags($_POST['nume']); // sterge posibile tag-uri in 'nume'
$ardata = file('uploads.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
// daca fisierul txt respectiv exista si poate fi scris
if(file_exists($numedis.'/'.$numedis.'.txt') && is_writable($numedis.'/'.$numedis.'.txt')) {
$ia = file_get_contents($numedis.'/'.$numedis.'.txt');
$nr = count($ardata);
for($a=0; $a<$nr; $a++) {
$ia = str_ireplace($ardata[$a], '<img src="upload/'.$ardata[$a].'" width="100" height="100" />', $ia);
}
file_put_contents($numedis.'/'.$numedis.'.txt', $ia);
}
else echo 'Fisierul: '. $numedis.'/'.$numedis.'.txt nu exista, sau nu poate fi scris.';
}
steell
Mesaje:190
tot nu functioneaza. am modificat scriptul in zeci de moduri si degeaba.
am scos for() si in uploads.txt am lasat o singura linie si am folosit $ardata[0] insa degeaba.
am folosit echo peste tot sa vad daca imi arata bine informatiile, am adaugat la file_put_contents un cuvant concatenat de sirul inlocuit sa vad daca face scrierea in fisier si am vazut ca singura linie care nu functioneaza este cea in care se face inlocuirea.
Cod: Selectaţi tot
$ia = str_ireplace($ardata[$a], '<img src="upload/'.$ardata[$a].'" width="100" height="100" />', $ia);
nu vrea sa inlocuiasca nici de nebun.
MarPlo
Mesaje:4343
Explicatia ar fi ca in continutul din variabila $ia (preluat din acel fisier TXT) nu este sirul pe care vrei sa-l inlocuiesti.
Ca test, incearca sa adaugi manual /direct textul la variabila $ia, sa contina si acel sir ce trebuie inlocuitt.