Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  PHP Regular Expression : HELP PLEASE! märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
R A T
HV veteran
R A T

liitunud: 21.04.2004




sõnum 14.01.2010 16:15:47 PHP Regular Expression : HELP PLEASE! vasta tsitaadiga

Tervitus,
Oleks vaja regulaaravaldise juures abi. Ise pole nõnda nutikas nende koostamisel.

Kui mul laetakse teksist selline asi:
Laetud on uus fail: <A HREF="failid/öäüõ.ddoc">failid/öäüõ.ddoc</A>


Siis oleks vaja see korda saada selliseks
Laetud on uus fail: <A HREF="failid/&ouml;&auml;&uuml;&otilde;.ddoc">failid/öäüõ.ddoc</A>


Kuidagi nii peab seda tegema, et ainult HREF= järgnev ära asendataks. Niipalju kui ma olen regulaaridega kokku puutunud, ajab see mind siiani segadusse.
Ehk on teist keegi, kes sellega vupsti valmis saab icon_smile.gif

Cased saan ma ise tehtud, et millega miski täht asendatakse, just huvitab regulaari osa.

Lisan veel vaidluste vältimiseks, et tegemist EI OLE koolitööga vaid isikliku lehega icon_wink.gif


Tänud ette!

_________________
Jogani pogani pooh


viimati muutis R A T 14.01.2010 18:02:22, muudetud 1 kord
Kommentaarid: 33 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 31
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Renka
HV Guru
Renka

liitunud: 01.04.2002




sõnum 14.01.2010 16:56:08 vasta tsitaadiga

R A T, räägi parem miks sa sellist jama üldse teha tahad?

Mulle tundub, et sul on lihtsalt probleem sellega, et veeb on vales kodeeringus vmt?

_________________
There is no place like 127.0.0.1
Kommentaarid: 71 loe/lisa Kasutajad arvavad:  :: 2 :: 1 :: 61
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Le Inc
HV Guru
Le Inc

liitunud: 06.09.2002



Autoriseeritud ID-kaardiga

sõnum 14.01.2010 17:40:58 vasta tsitaadiga

Kas str_replace ei sobi? See väidetavalt kiirem kui preg_match. Kunagi tegin ühe pisikese funktsiooni:


function tyhik($value) {
    return
    str_replace(array(" ","Ä","ä","Ö","ö","Õ","õ","Ü","ü"), array("+","%C4","%E4","%D6","%F6","%D5","%F5","%DC","%FC"), $value);
}


See oli küll mõeldud URL jaoks, põmst saab sinna igasugu jura kirjutada.
Kommentaarid: 56 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 54
tagasi üles
vaata kasutaja infot saada privaatsõnum
R A T
HV veteran
R A T

liitunud: 21.04.2004




sõnum 14.01.2010 18:03:18 vasta tsitaadiga

Teha tahan seepärast, et varasemast ajast on kasutusel süsteem, mis salvestab lingid täpselt nii, nagu nad ette söödetakse.
Seega hiljem linki echodes tulevad valed HREF-id mis ei vii mitte kusagile. Õige oleks juba lingi sisestamisel need korrigeerida, kuid siis oleks mul ikka sarnasest koodijupist abi icon_wink.gif
Kui aga enne sisselaadimist toimub eniveis smailide jmt ümbermuutmine IMG-deks, siis saaks ilusti ka lingid seal korda teha.
Kahjuks sai natuke halvasti tehtud lingi sissekanne ja kuva kuid enam seda eriti kerge muuta pole.

Expressioniga saab vahemiku välja juurida kus tähti muudetakse, et vaadataks <A HREF=" ja "> vahele ning just seal muudatused tehtaks.
Le Inc varianti kasutades vahetataks ka lingi tekst välja peale URL-i, pane tähele kus peavad antud tähed jääma:
tsitaat:
Laetud on uus fail: <A HREF="failid/&ouml;&auml;&uuml;&otilde;.ddoc">failid/öäüõ.ddoc</A>

_________________
Jogani pogani pooh
Kommentaarid: 33 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 31
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Renka
HV Guru
Renka

liitunud: 01.04.2002




sõnum 14.01.2010 18:22:11 vasta tsitaadiga

R A T, võibolla muudad serveri confi nii, et täpitähed URLides ka töötaks hoopis?

Aga kui rääkida Le Inc variandist siis see on ju savi kui tähed seal ära vahetatakse. Brauser kuvab htmlentitied ju ikka korrektsete tähtedena.

_________________
There is no place like 127.0.0.1
Kommentaarid: 71 loe/lisa Kasutajad arvavad:  :: 2 :: 1 :: 61
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
R A T
HV veteran
R A T

liitunud: 21.04.2004




sõnum 14.01.2010 20:03:47 vasta tsitaadiga

Aha, see on õige tähelepanekt, et brauser asjad õigena kuvab! icon_wink.gif
Aga serveris ma muudatusi teha ei saa - pole minu võimuses asja konfida.

edit: Aiai, ei kõlba ikka nii, peab avaldisega tegema.
Hetkel on nii, et kui koodis muudetakse tekst ikka "tulen r%E4%E4gin sulle %F6istest %FCleelamistest"-ks, siis nii jääb ta ka outputis näha. Lingid aga töötasid kenasti! icon_wink.gif
Ma kunagi jamasin ühe teise variandiga, kus mingi päevase jamamise tulemusena suutsin teatud lingid välja otsida selle abil:

$regexp = "<a\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>(.*)<\/a>";

Oskab keegi seda ümber teha nõnda, et saaks hrefile järgneva stringi seest case meetodil asju vahetada.
Mul on kuul korralikult koos. Faking regulaaravaldised on ikka kõrgem klass nats icon_biggrin.gif

_________________
Jogani pogani pooh
Kommentaarid: 33 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 31
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 14.01.2010 22:47:38 vasta tsitaadiga

Ehk proovid JavaScripti? Pane see kood omale lehe lõppu.

var link="";
var tahed = new Array("õ", "ü", "ö", "ä", "Ä", "Ö", "Ü", "Õ");
var vasted = new Array("&otilde;", "&uuml;", "&ouml;", "&auml;", "&Auml;", "&Ouml;", "&Uuml;", "&Otilde;");
var lingid = document.getElementsByTagName("a");
for (i=0;i<lingid.length;i++){
   link = lingid[i].href;
      for(ii=0;ii<7;ii++){
         link = link.replace(tahed[ii] , vasted[ii]);
                              }
               lingid[i].href = link;
                                       }

_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
R A T
HV veteran
R A T

liitunud: 21.04.2004




sõnum 15.01.2010 01:56:08 vasta tsitaadiga

Tänud, Javascript on ka muidugi võimalus, ei tulnud selle pealegi.
Kahjuks antud script ei funksi, tegin väikse debugi sisse. Kood on nüüd selline:
<script type="text/javascript">
var linkz="";
var tahed = new Array("õ", "ü", "ö", "ä", "Ä", "Ö", "Ü", "Õ");
var vasted = new Array("&otilde;", "&uuml;", "&ouml;", "&auml;", "&Auml;", "&Ouml;", "&Uuml;", "&Otilde;");
var lingid = document.getElementsByTagName("a");
document.write("Total: "+lingid.length);
for (i=0;i<lingid.length;i++){
   linkz = lingid[i].href;
   document.write("X:"+i+": "+linkz);
      for(ii=0;ii<7;ii++){
         linkz = linkz.replace(tahed[ii] , vasted[ii]);
      }
   document.write("=="+linkz+"<br>");
   lingid[i].href = linkz;
}
</script>


Algselt oli probleem "link" variablega, seda ta parsis funktsiooniks.
Edasi leidsin, et nagu mingit effekti ei ole.
Panin document writed vahele, et näha mis toimub ja tulemuseks on ühe lingi puhul näiteks see:



X:34: http://XXXXXXXXXXX/failid/Andre/Suvep%C3%A4evad085.jpg==http://XXXXXXXXXXX/failid/Andre/Suvep%C3%A4evad085.jpg


XXXXXXXXXXX=enda huvides removetud aadress.

Eniveis, nagu näha loeb javascript kohe tähed enda jaoks "oigesti" sisse ja seega pole seal midagi muuta mistõttu jääb brauseris (FF 3.6) seis linkide puhul täpselt samaks. Server lükkab 404 ette icon_sad.gif

Niiet probleem püsib.

12 pointsi efforti eest, aitäh!

_________________
Jogani pogani pooh
Kommentaarid: 33 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 31
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Le Inc
HV Guru
Le Inc

liitunud: 06.09.2002



Autoriseeritud ID-kaardiga

sõnum 15.01.2010 11:27:21 vasta tsitaadiga

Ma saan küll oma php servus sellise jutu html'i koodis:


<form name="kala" method="POST" action="kala.php">

<input type="text" name="lahter1" value="failid/öäüõ.ddoc">



<input type="submit" name="saada" value="Saada">


</form>
Asi: <A HREF="failid/&ouml;&auml;&uuml;&otilde;.ddoc">failid/öäüõ.ddoc</A>


Kasutasin sedasama tyhik funktisooni ... icon_rolleyes.gif

Kood:
Spoiler Spoiler Spoiler
Kommentaarid: 56 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 54
tagasi üles
vaata kasutaja infot saada privaatsõnum
R A T
HV veteran
R A T

liitunud: 21.04.2004




sõnum 15.01.2010 12:48:35 vasta tsitaadiga

Suured tänud, sain asja tööle.
Väga valesti sai ikka asjale lähenetud.
Ma ei tea, miks ma kohe ainult HREF stringis ei toimetanud replacega, olin ikka eriti tumba icon_biggrin.gif

Eniveis, lahendasin siis nii:

function fix_url($value) {
    return
    str_replace(array(" ","Ä","ä","Ö","ö","Õ","õ","Ü","ü"), array("%20","%C4","%E4","%D6","%F6","%D5","%F5","%DC","%FC"), $value);
}


ja lingid genereeritakse nüüd nii:
echo "<div id=\"opaquetext\">&nbsp;&nbsp;<img src=\"".$f_icon."\" width=20 height=20 border=0 alt=\"".$f_path."\"><b>".$f_date."</b> Laetud on uus fail: <A HREF=\"".fix_url($f_path)."\">".$f_path."</A><br></div>";




KIITOOOOS icon_smile.gif

_________________
Jogani pogani pooh
Kommentaarid: 33 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 31
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 15.01.2010 13:53:57 vasta tsitaadiga

tsitaat:
Eniveis, nagu näha loeb javascript kohe tähed enda jaoks "oigesti" sisse

Ta muudab needära kül, ainult ega sa neid ei näe, kui kuvad browseris välja, sest browser kuvab ka &otilde; asemele õ
Proovisin kõigi browseritega, avab kenasti täpitähtedega linke, nii IE, FF kui Opera. Operas on ka näha, kui viid kursori lingile, siis lingil on sees %C4 %E4 %D6 %F6 tähed. Peale klikki on aadressribal täpitähed aga fail tuleb lahti.

Tore, et probleemi lahendatud said. PHP s on kindlam ka.

_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  PHP Regular Expression : HELP PLEASE!
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.