Panelen



Forumnavigering
Senast inloggade
RSS
Sponsorer

Forum > Övriga serverspråk > PHP

Upload error

Hultin
Hultin

Gradering

#19695

Hej!

Jag har skapat en funktione som kollar om en fil har ändelsen .torrent, men jag har stött på ett problem då funktionen kollar efter första punkten och stannar där och jämför, det är inte ovanligt att torrentfiler heter Något.annat-här.torrent och inte Något annat-här.torrent. Jag vill nu ha hjälp att se till att funktionen kontrollerar att filändelsen är .torrent.

Nuvarande kod:

function check_torrent($f){
    if (!preg_match('/^(.+)\.torrent$/si', $f, $matches)){
        return false;
    } else {
        return true;
    }
}

 

... ORANGE HEARTS!
ID: #19695 | Skapades: 2010-04-13 15:43:51 | Tråden har 10 svar och har lästs 273 gånger.

voigtan
voigtan

Gradering

#19696

Function check_torrentFileName($fileName) {
    return preg_match('/^.+\.torrent$/im', $fileName);
}

(kortat ner din funktion, du kör ju inga matches så det är bara onödigt att skapa en referens du aldrig använder) kör en check att den slutar på .torrent så den

du kan testar regexp uttrycket på: http://voigt.se/sandbox/regexpjs/

^.+\.torrent

är korrekt. så länge den inte innehåller en radbrytning (som regexp "." innebär).

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #19696 | Skapades: 2010-04-13 16:05:00

Hultin
Hultin

Gradering

#19697

Provade att köra ^.+\.torrent i din sandlåde skript, och det returnderade hela namnet när jag provade: Community.S01E20.HDTV.XviD-LOL.torrent som värde.

... ORANGE HEARTS!
ID: #19697 | Skapades: 2010-04-13 16:08:16

voigtan
voigtan

Gradering

#19698

ja, det är ju korrekt, om den matchar uttrycket så skall den retunera det, om den inte hade hittat uttrycket så hade du aldrig fått en matchning.

red:

 

Dock så missade jag det skulle vara ^.+\.torrent$

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
Redigerades av voigtan den 13 april 2010. Läs tidigare inlägg.
ID: #19698 | Skapades: 2010-04-13 16:11:29

Hultin
Hultin

Gradering

#19699

Aha då förstår jag, blev lite förvirrad helt enkelt. Vad gör "$" där i slutet? Alltså, vad betyder det?

 

Som du kanske märker har jag tagit detta uttrycket från ett annat filformat och bara bytat ut mp3 till torrent

... ORANGE HEARTS!
Redigerades av Hultin den 13 april 2010. Läs tidigare inlägg.
ID: #19699 | Skapades: 2010-04-13 16:13:46

voigtan
voigtan

Gradering

#19700

^ = början av en sträng (om den inte är i en [] då betyder den matchar INTE det som finns i gruppen)

$= slutet av en sträng

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #19700 | Skapades: 2010-04-13 16:16:55

Hultin
Hultin

Gradering

#19701

Aha, då är jag med. Dock får jag det inte riktigt att fungera, jag har printat alla värden för att försäkra mig om att rätt data matas in i functionen, och det sker som det skall. Använder samma testvärde, dvs Community.S01E20.HDTV.XviD-LOL.torrent. Tror jag kommer ge mig på att bygga en funktion som räknar 8 tecken bakåt och klipper bort allt annat och sedan kollar om det är .torrent kvar.

... ORANGE HEARTS!
ID: #19701 | Skapades: 2010-04-13 16:22:21

voigtan
voigtan

Gradering

#19702

Men vännen, din funktion ovan retunera bara true eller false, du tittar på helt fel funktion för denna klipper inget alls, den kollar bara om text innehåller .torrent i slutet.

 

ditt mönster fungera spelar ingen roll om den heter

 

c:\WjasdasdWad-ASdasdas-d_asdas.dsada.torrent

så kommer den matchar på den den stoppar vid den första matchningen på ditt regexp uttryck vilket säger att den få börja med vad som helst bara det slutar på .torrent

echo ut din sträng och gör ett element runt det eller vad som hellst, för om den slutar på ".torrent " så kommer uttrycket inte matchas.

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
Redigerades av voigtan den 13 april 2010. Läs tidigare inlägg.
Redigerades av voigtan den 13 april 2010. Läs tidigare inlägg.
ID: #19702 | Skapades: 2010-04-13 16:38:29

voigtan
voigtan

Gradering

#19703

php test:

http://php.voigt.se/sandbox/IsFile/

kod:

<?
$normalFile = "filen.jpg";
$torrentFile = "filen.torrent";
$torrentFile2 = "Community.S01E20.HDTV.XviD-LOL.torrent";

function check_torrentFileName($fileName) {
    return preg_match('/^.+\.torrent$/im', $fileName);
}

echo($normalFile." = ".check_torrentFileName($normalFile)."<br />".$torrentFile." = ".check_torrentFileName($torrentFile)."<br />".$torrentFile2." = ".check_torrentFileName($torrentFile2));
?>

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
Redigerades av voigtan den 13 april 2010. Läs tidigare inlägg.
ID: #19703 | Skapades: 2010-04-13 16:54:45

Hultin
Hultin

Gradering

#19704

Det jag menade med "klippa" var en helt annan funktionen, kan ha formulerat mig lite illa kanske.

Nu skäms jag även lite, upptäckte att det var ett stavfel längre upp i uppladdningsskriptet som var anledningen att din funktion inte fungerade direkt, ber om ursäkt.

... ORANGE HEARTS!
ID: #19704 | Skapades: 2010-04-13 19:59:41

voigtan
voigtan

Gradering

#19705

Kanon ;) då sätter jag tråden som löst

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #19705 | Skapades: 2010-04-13 20:18:03
© Copyright 2007-2009 Shadi Domat | Version 3.0 | Sidkarta | Policy