PHP: editacia suboru

Programovacie jazyky, rady, poradňa...
Nevilel
Amateur
Amateur
Príspevky: 17
Registrovaný: 03 jan 2009, 21:48
Kontaktovať používateľa:

PHP: editacia suboru

Príspevok od používateľa Nevilel »

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
TGiJack
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 419
Registrovaný: 30 nov 2006, 19:37
Bydlisko: NO
Kontaktovať používateľa:

Príspevok od používateľa TGiJack »

tu je to skoro to iste

Kód: Vybrať všetko

http://www.hojko.com/ulozenie-premennej-t119362.html

audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

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
VIP
Používateľov profilový obrázok
Príspevky: 4810
Registrovaný: 09 feb 2005, 13:17

Príspevok od používateľa mastermind »

mozes mi vysvetlit co je to za format suboru ktory si zvolil? nemyslis, ze existuje dostatocne mnozstvo rozsirenych a univerzalnych formatov? preco nepouzit XML, pripadne nejaky iny format? preco si to sam komplikujes?
TGiJack
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 419
Registrovaný: 30 nov 2006, 19:37
Bydlisko: NO
Kontaktovať používateľa:

Príspevok od používateľa TGiJack »

mohol by si tu prosim len tak pre zujemavost tu dopisat riadot ,ktorý by uložil do premennej to medzi tými tagmi
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

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]);
samozrejme za predpokladu rovnakého príkladu (teda v $data je obsah toho súboru)
TGiJack
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 419
Registrovaný: 30 nov 2006, 19:37
Bydlisko: NO
Kontaktovať používateľa:

Príspevok od používateľa TGiJack »

jj ved samozrejme,ved tam len ta jedna unkcia sa zmeni a na tu som bol zvedavý dik :)
Nevilel
Amateur
Amateur
Príspevky: 17
Registrovaný: 03 jan 2009, 21:48
Kontaktovať používateľa:

Príspevok od používateľa Nevilel »

do tej premennej chcem dat hviezdicku (*)

diki ludia
TGiJack
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 419
Registrovaný: 30 nov 2006, 19:37
Bydlisko: NO
Kontaktovať používateľa:

Príspevok od používateľa TGiJack »

Nevilel napísal:do tej premennej chcem dat hviezdicku (*)

diki ludia

Kód: Vybrať všetko

$prepis = '\*';
a maš to :)
Nevilel
Amateur
Amateur
Príspevky: 17
Registrovaný: 03 jan 2009, 21:48
Kontaktovať používateľa:

Príspevok od používateľa Nevilel »

jj, diki

//autoeditácia príspevku ( 23 May 2009, 20:39 )
ludia pls este ak mam nieco taketo:

<nieco daco="volaco" daco-ine="volaco" />

a potrebujem zmenit "volaco", ako na to?
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

skús takto

Kód: Vybrať všetko

preg_replace('/([daco|daco\-ine]=" )(.+?)"/is', "$I".$prepis.'"', $data);
mastermind
VIP
VIP
Používateľov profilový obrázok
Príspevky: 4810
Registrovaný: 09 feb 2005, 13:17

Príspevok od používateľa mastermind »

haloooo. pocuje ma tu niekto? poculi ste niekedy o XML? a spracovavat XML cez regularne vyrazy? snad nie toto.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

áno počujeme, ale najprv nech si z toho spraví xml (vlastne ani netušíme čo robí) a potom sa môžeme o xml baviť.
Nevilel
Amateur
Amateur
Príspevky: 17
Registrovaný: 03 jan 2009, 21:48
Kontaktovať používateľa:

Príspevok od používateľa Nevilel »

druhy dokument ktory potrebujem editovat XML:

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>

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 )
mastermind napísal:haloooo. pocuje ma tu niekto? poculi ste niekedy o XML? a spracovavat XML cez regularne vyrazy? snad nie toto.
minuly dokument bol jednoduchy, myslel som ze by bolo jednoduche ho prerobit aj ako .txt subor
mastermind
VIP
VIP
Používateľov profilový obrázok
Príspevky: 4810
Registrovaný: 09 feb 2005, 13:17

Príspevok od používateľa mastermind »

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.

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 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
Nevilel
Amateur
Amateur
Príspevky: 17
Registrovaný: 03 jan 2009, 21:48
Kontaktovať používateľa:

Príspevok od používateľa Nevilel »

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:

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&#xF6;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
VIP
Používateľov profilový obrázok
Príspevky: 4810
Registrovaný: 09 feb 2005, 13:17

Príspevok od používateľa mastermind »

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.
Nevilel
Amateur
Amateur
Príspevky: 17
Registrovaný: 03 jan 2009, 21:48
Kontaktovať používateľa:

Príspevok od používateľa Nevilel »

takze ked ma rovake polozky je to aj jeden jazyk ---->> bude to vzdy jeden NS spravne to chapem?

ak ano tak to nechajme tak, ale nefunguje mi to ani ked zadam NS
mastermind
VIP
VIP
Používateľov profilový obrázok
Príspevky: 4810
Registrovaný: 09 feb 2005, 13:17

Príspevok od používateľa mastermind »

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:

Kód: Vybrať všetko

//@ns:minVersion | //ns:minVersion
Nevilel
Amateur
Amateur
Príspevky: 17
Registrovaný: 03 jan 2009, 21:48
Kontaktovať používateľa:

Príspevok od používateľa Nevilel »

diki, uz to funguje
Napísať odpoveď