PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : (PHP) - Prüfen ob $string ein Releasename ist



darkness
13.10.2015, 18:14
Hat jemand ne Idee wie ich 100% sicher prüfen kann ob ein Text ein Releasename ist?

Also zum Beispiel:

Elser.Er.haette.die.Welt.veraendert.German.2015.AC 3.BDRiP.x264-XF = ja / nein

DjMergim
13.10.2015, 18:19
Willst du prüfen ob es das RLS wirklich gibt oder nur ob da nach den Regeln der Szene ein RLS Name ist?
Falls ersteres dann könntest du das via Abfrage bei XREL machen.

darkness
13.10.2015, 18:22
Ne nur ob es nach Regeln ein existierendes Release sein könnte, falls jemand nen Plan hat wie ich das Erstellungsdatum von nem FTP Order per PHP bekomme kann er es mir auch sagen.

Nimbus
13.10.2015, 18:28
Um wirklich 100% zu erreichen müsstest du den String mit einer Datenbank o.ä. vergleichen, die wirklich alle Releasetitel enthält. Wenn das nicht möglich ist, dann kannst du ein RegEx-Pattern basteln, dass auf den Konventionen zur Namensgebung basiert. Die Erkennung per RegEx hat allerdings den Nachteil, dass du (sofern richtig umgesetzt) mit großer Wahrscheinlichkeit sagen kannst, dass ein String kein Releasetitel ist. Du kannst aber nie mit 100%iger Sicherheit bestimmen ob es wirklich einer ist. Für Szenereleases kann man vermutlich recht gute und auch komplexe Regeln aufstellen, aber wenn auch P2P Releases erkannt werden sollen, dann muss man etwas "kulanter" bei der Erkennung sein.

Erstellungsdatum per PHP könnte schwierig werden, da sich verschiedene FTP Server unterschiedlich genau an die Standards halten und diese unterschiedlich gut in den jeweiligen PHP-Schnitstellen implementiert sind

darkness
13.10.2015, 18:35
Ok 100% sicher ist nicht wichtig ich hab halt nen Dump und da sind order drauf irgendein ordner hat dann einen releasename

Nimbus
13.10.2015, 18:50
Wenn es nur um einen bestimmten FTP geht, dann kannst du mit ausprobieren sicherlich eine FTP-Schnittstelle für PHP finden, die diesen unterstützt (eventuell cURL?)

Unter Umständen hilft dir bei der Problemstellung aber auch schon der zum FTP gehörende IRC? Dort lassen sich diese Informationen oft ebenfalls finden und das eventuell sogar einfacher/direkter

jbs
13.10.2015, 20:21
https://www.google.de/search?q=regex+valid+scene+release

:D

zerox
14.10.2015, 18:46
Relativ schwierig, außer der Titel hat immer so viele Punkte ... aber es gibt ja auch Leute die ohne Punkte eintragen. Dann müsste man die Wörter checken.

FLX
15.10.2015, 01:29
Da würde sich vermutlich eine Kombination aus mehreren Faktoren anbieten.

- whiteliste mit Scenerelease typischen Standardbegriffen (Dubbed, Subbed, BDRiP, WEBHD, usw.)
- blacklist mit p2p Groupnamen und Scenerelease untypischen Begriffen (BRRip, iTunesHD, TVS, FREAKS)
- Filtern auf unerwünschte Zeichen (Scene verwendet nur [A-Z][a-z][0-9] sowie Bindestrich, Unterstrich und Punkte)
- Überprüfen ob Releasename mit -foo endet
- Gegencheck bei einer Releasedatenbank
- Kontrollieren des Inhalts auf Sample, Sfv usw.

Mit ausgeklügelten Kombinationen könnte man mit Sicherheit eine fast 100% Trefferquote erhalten.

darkness
15.10.2015, 14:40
Es reicht in diesem Fall möglicherweise zu prüfen

Anzahl Punke > 1
Enthält -

Auf den Dumps würde das reichen

jbs
15.10.2015, 16:26
Wenn du MP3 Releases auch haben willst, wird diese Regel aber nur in den seltensten Fällen zutreffen.

zerox
15.10.2015, 18:44
Vllt um mal einen ersten Gedanken zu geben wie man anfangen könnte:

PHP:

$name = 'Elser.Er.haette.die.Welt.veraendert.German.2015.A C 3.BDRiP.x264-XF';
$parts = explode('.', $name);

foreach ($parts as $part) {
if (checkMyPart($part)) {
return false;
}
}

function checkMyPart($string) {
// einzelnen String checken ob bekannte Wörter und Tags enthalten sind oder nicht
}

Nimbus
15.10.2015, 23:40
Ich glaube wir würden hier ein ordentliches Stück weiterkommen, wenn du die Problemstellung genauer präzisierst. Wenn wir wüssten, was genau du vorhast, dann könnten wir dir eventuell zielorientierter helfen.

Wie grob darf das ganze sein? Es macht für die Komplexität einen großen Unterschied, ob die möglichen ungültigen Eingaben überhaupt in die eines Releastitels kommen. Möchtest du nur Szenestandard? Möchtest du auch P2P?

Bei deinem Vorschlag wären z.B. die Eingaben "-.-" oder "Yᵒᵘ Oᶰˡʸ Lᶤᵛᵉ Oᶰᶜᵉ.-" als "gültiges" Release erkannt wurden. Ob das nun ein Problem ist hängt vom Ursprung der Eingaben ab und damit wieder vom Einsatzzweck.

FLX
16.10.2015, 02:09
Folgendes Snippet überprüft den Namen genau wie gewünscht.
Ich hab noch keine Scene Group Namen mit weniger wie 3 Buchstaben gesehen
daher überprüfe ich mit php internen Funktionen ob auf dem letzten Bindestrich eine Mindestanzahl Buchstaben folgen.



if(substr_count($rlsName, '.') > 1 && strlen(substr(strrchr($rlsName, '-'), 1)) > 2)
echo "Das Release enthält mind. 2 Punkte im Namen und endet auf einen Bindestrich gefolgt von mind. 3 Buchstaben";

Nimbus
16.10.2015, 13:01
Etwas intuitiver zu lesen und offener für Erweiterungen wäre meiner Meinung nach etwas in diese Richtung:


if(preg_match("#^([A-z0-9]+\.){2,}.([A-z0-9]+)-([A-z0-9]){3,}$#", $rlsName)){
echo "Das Release enthält mind. 2 Punkte im Namen und endet auf einen Bindestrich gefolgt von mind. 3 Buchstaben\n";
}

Hätte auch den Vorteil, dass nur Buchstaben und Zahlen in den "Blöcken" und als Gruppenname akzeptiert werden. Den Pool an zulässigen Zeichen kann man bei Bedarf natürlich erweitern.