PHP: editacia suboru
PHP: editacia suboru
Dobrý deň,
prosím napísal by mi nekdo PHP skript ktory by zmenil to co je medzi tagmi <zac>a</konc> v txt súbore?
Ďakujem
prosím napísal by mi nekdo PHP skript ktory by zmenil to co je medzi tagmi <zac>a</konc> v txt súbore?
Ďakujem
-
TGiJack
Medium Star
- Príspevky: 419
- Registrovaný: 30 nov 2006, 19:37
- Bydlisko: NO
- Kontaktovať používateľa:
tu je to skoro to iste
Kód: Vybrať všetko
http://www.hojko.com/ulozenie-premennej-t119362.html
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
TGiJack: to je iné. Tam si vedel text ktorý nahrádzaš. Tu ho nevieš ale vieš čím je obklopený. Riešil by som to takto nejak:
Kód: Vybrať všetko
<?
$subor = "vstup.txt";
$prepis = 'test'; //všetko medzi <zac> a </konc> sa prepíše týmto textom
$data = file_get_contents($subor);
$f = fopen("vstup.txt","w");
fwrite($f,preg_replace('/<zac>(.*)<\/konc>/iU', "<zac>".$prepis."</konc>", $data));
fclose($f);
?>-
mastermind
VIP
- Príspevky: 4810
- Registrovaný: 09 feb 2005, 13:17
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
TGiJack napísal:mohol by si tu prosim len tak pre zujemavost tu dopisat riadot ,ktorý by uložil do premennej to medzi tými tagmi
Kód: Vybrať všetko
preg_match_all('/<zac>(.*)<\/kon>/iU',$data,$premenna);
var_dump($premenna[1]);-
TGiJack
Medium Star
- Príspevky: 419
- Registrovaný: 30 nov 2006, 19:37
- Bydlisko: NO
- Kontaktovať používateľa:
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
skús takto
Kód: Vybrať všetko
preg_replace('/([daco|daco\-ine]=" )(.+?)"/is', "$I".$prepis.'"', $data);-
mastermind
VIP
- Príspevky: 4810
- Registrovaný: 09 feb 2005, 13:17
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
druhy dokument ktory potrebujem editovat XML:
takze priblizna struktura toho XML je takato:
nemusia tam byt vsetky tie veci a mozu tam byt aj nejaké naviac!
potrebujem:
1. nahradit em:minVersion="........." na em:minVersion="0.*"
2. nahradit em:maxVersion=".........." na em:maxVersion="*"
Ďakujem
//autoeditácia príspevku ( 23 May 2009, 21:47 )
takze priblizna struktura toho XML je takato:
Kód: Vybrať všetko
<?xml version="1.0"?>
<RDF:RDF xmlns:em="......"
xmlns:NC="........"
xmlns:RDF="..............">
<RDF:Description RDF:about="............."
em:id="{................................}"
em:minVersion="........."
em:maxVersion=".........." />
<RDF:Description RDF:about="...:.......:.......-........"
em:id="................"
em:version="........."
em:type="........."
em:optionsURL="......."
em:name="........."
em:description="........."
em:creator="..........."
em:homepageURL="...............">
<em:targetApplication RDF:resource="............"/>
</RDF:Description>
</RDF:RDF>
potrebujem:
1. nahradit em:minVersion="........." na em:minVersion="0.*"
2. nahradit em:maxVersion=".........." na em:maxVersion="*"
Ďakujem
//autoeditácia príspevku ( 23 May 2009, 21:47 )
minuly dokument bol jednoduchy, myslel som ze by bolo jednoduche ho prerobit aj ako .txt subormastermind napísal:haloooo. pocuje ma tu niekto? poculi ste niekedy o XML? a spracovavat XML cez regularne vyrazy? snad nie toto.
-
mastermind
VIP
- Príspevky: 4810
- Registrovaný: 09 feb 2005, 13:17
hmm tak ja by som to riesil asi cez XPath.
zaregistrujes si namespace em (neviem aky je, kedze si ho neuviedol), urobis si velmi jednoduchy filter a potom to v cykle zmenis.
//autoeditácia príspevku ( 23 May 2009, 23:58 )
kedze sa blizia statnice a nechce sa mi ucit, tak som sa s tym pohral
toto ti nacita XML zo suboru rdf.xml, vyberie vsetky atributy, nastavi im hodnotu "novaHodnotaAtributu"a ulozi do suboru rdf2.xml
toto je len proof of concept tak dufam ze si to uz upravis na svoje potreby
zaregistrujes si namespace em (neviem aky je, kedze si ho neuviedol), urobis si velmi jednoduchy filter a potom to v cykle zmenis.
Kód: Vybrať všetko
http://sk2.php.net/manual/en/class.domxpath.php//autoeditácia príspevku ( 23 May 2009, 23:58 )
kedze sa blizia statnice a nechce sa mi ucit, tak som sa s tym pohral
Kód: Vybrať všetko
<?php
$file = "rdf.xml";
$doc = new DOMDocument();
$doc->load($file);
$xpath = new DOMXpath($doc);
$xpath->registerNamespace("ns","testNS"); //tu namiesto "testNS" zadaj namespace pre prefix em ktory si neuviedol
$attributes = $xpath->query("//@ns:minVersion");
if (!is_null($attributes)) {
foreach ($attributes as $att) {
$att->nodeValue="novaHodnotaAtributu";
}
}
$doc->save("rdf2.xml");
?>toto je len proof of concept tak dufam ze si to uz upravis na svoje potreby
diki, a nedalo by sa urobit ze by si to nacitalo samo? lebo si niesom isty ze bude v kazdom xml co budem chciet editovat rovnaky
//autoeditácia príspevku ( 24 May 2009, 8:34 )
nefunguje to
, aj vytvori novy subor ale nezmeni ho 
tu je to cele xml:
//autoeditácia príspevku ( 24 May 2009, 8:34 )
nefunguje to
tu je to cele xml:
Kód: Vybrať všetko
<?xml version="1.0"?>
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#">
<Description about="urn:mozilla:install-manifest">
<em:id>{e4a8a97b-f2ed-450b-b12d-ee082ba24781}</em:id>
<!-- NOTE : build.sh will correct the em:version, if applicable -->
<em:version>0.8.20080609.0</em:version>
<em:creator>Aaron Boodman; http://youngpup.net/</em:creator>
<em:homepageURL>http://www.greasespot.net/</em:homepageURL>
<em:optionsURL>chrome://greasemonkey/content/manage.xul</em:optionsURL>
<em:iconURL>chrome://greasemonkey/content/icon_medium.png</em:iconURL>
<em:name>Greasemonkey</em:name>
<em:description>A User Script Manager for Firefox</em:description>
<em:contributor>Anthony Lieuallen; http://arantius.com</em:contributor>
<em:contributor>Chris Feldmann; http://axlotl.net</em:contributor>
<em:contributor>David Schontzler; http://stilleye.com/</em:contributor>
<em:contributor>Gareth Andrew; http://freegarethandrew.org</em:contributor>
<em:contributor>Hisateru Tanaka</em:contributor>
<em:contributor>Jeremy Dunck; http://dunck.us/anabasis/</em:contributor>
<em:contributor>Jesper Kristensen <[email protected]></em:contributor>
<em:contributor>Johan Sundström; http://ecmanaut.blogspot.com/</em:contributor>
<em:contributor>JP Sugarbroad</em:contributor>
<em:contributor>Juan Pablo Guereca Alonso</em:contributor>
<em:contributor>Manpreet Singh</em:contributor>
<em:contributor>Mark Pilgrim; http://diveintomark.org</em:contributor>
<em:contributor>Marti Martz</em:contributor>
<em:contributor>Matthias Bauer; http://moeffju.net/</em:contributor>
<em:contributor>Matthew Gray; http://mkgray.com:8000/</em:contributor>
<em:contributor>Nikolas Coukouma; http://atrus.org/</em:contributor>
<em:contributor>Ori Avtallon</em:contributor>
<em:contributor>Pak Kei (logo); http://arkidect.com/</em:contributor>
<em:contributor>Sergio Abreu; http://sitedosergio.sitesbr.net</em:contributor>
<em:contributor>Tommi Rautava</em:contributor>
<!-- Firefox -->
<em:targetApplication>
<Description>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<em:minVersion>1.5</em:minVersion>
<em:maxVersion>4.0.*</em:maxVersion>
</Description>
</em:targetApplication>
<!-- Songbird -->
<em:targetApplication>
<Description>
<em:id>[email protected]</em:id>
<em:minVersion>0.3pre</em:minVersion>
<em:maxVersion>4.3.*</em:maxVersion>
</Description>
</em:targetApplication>
<em:file>
<Description about="urn:mozilla:extension:file:greasemonkey">
<em:package>content/</em:package>
</Description>
</em:file>
</Description>
</RDF>
-
mastermind
VIP
- Príspevky: 4810
- Registrovaný: 09 feb 2005, 13:17
aby si nacitalo namespace samo? to je nezmysel. ten namespace musi byt vo vsetkych dokumntoch rovnaky.
namespace sluzi na to, aby si vedel povedat do ktoreho "jazyka" dany uzol patri. v ramci jedneho XML dokumentu mozes mat spojenych viacero jazykov (kazdy s vlastnym namespacom). viacero z nich moze definovat atribut minVersion, pricom v kazdom z nich bude mat tento atribut iny vyznam.
Ak vies, co ma tvoja aplikacia robit, MUSIS vediet z ktoreho jazyka chces atribut minVersion upravit.
namespace sluzi na to, aby si vedel povedat do ktoreho "jazyka" dany uzol patri. v ramci jedneho XML dokumentu mozes mat spojenych viacero jazykov (kazdy s vlastnym namespacom). viacero z nich moze definovat atribut minVersion, pricom v kazdom z nich bude mat tento atribut iny vyznam.
Ak vies, co ma tvoja aplikacia robit, MUSIS vediet z ktoreho jazyka chces atribut minVersion upravit.
-
mastermind
VIP
- Príspevky: 4810
- Registrovaný: 09 feb 2005, 13:17
nefunguje to preto, lebo predtym si uviedol ze minVersion je atribut. v tom xml ktore si dal, je to samostaty element. musis teda upravit XPath tak, aby bral do uvahy aj samostatne elementy aj atributy
nemam to vyskusane, ale malo by to vyzerat nejak takto:
nemam to vyskusane, ale malo by to vyzerat nejak takto:
Kód: Vybrať všetko
//@ns:minVersion | //ns:minVersion