Huhu, brauche mal eure Hilfe, zu den RegExp...
Hier mal die Vorgabe...http://hmmm.pastebin.com/7351hK9w
Wie ihr seht, ist mir klar, wie der Link aussieht... Nur, schaffe ich es i-wie nicht, nur das zu bekommen...
Greetz
Huhu, brauche mal eure Hilfe, zu den RegExp...
Hier mal die Vorgabe...http://hmmm.pastebin.com/7351hK9w
Wie ihr seht, ist mir klar, wie der Link aussieht... Nur, schaffe ich es i-wie nicht, nur das zu bekommen...
Greetz
Hallo Fr34k,
die Vorgaben woanders auszulagern ist unhöflich, habe den Thread daher nicht freigeschaltet (noch nicht einmal die Mühe gemacht es zu lesen).
mfg autoBert
Wozu RegEx, nimm doch _StringBetween.
autoBert, sry, wusste ich nicht... wird nicht wieder vorkommen...
@m-obi, dies ist bereits ein Ergebnis von _StringBetween, und nun habe ich dies, nach was soll ich denn hier mit StringBetween machn?!
Es kann sein, dass folgendes vorhanden ist:
<a href="security.php?url=aHR0cDovL3d3dy5yZWxpbmsudXMvZi8yMmFkZjI3NDEwM2JhYzkyMTVhMWM4ZDAzM2RkZmM=" target="_blank" title="http://www.relink.us/f/22adf274103bac9215a1c8d033ddfc"><span style="color: indigo;"><b>Download File</b></span></a>
Es kann jedoch auch sein, dass nur dies vorhanden ist:
Wie will ich denn hier StringBetween anwenden?!
Lg
Dann wäre es eher interessant wie der String aussieht bevor du ihn mit StringBetween so zerstückelst das dieses variable Ergebnis rauskommt.
Ansonsten als RegExp-Ansatz:
#include <Array.au3>
[/autoit][autoit][/autoit][autoit]$aRegExp = StringRegExp($sString, "(http://(?:www\.)?(?:relink|ul|depositfiles|rapidshare|uploaded|netload|x7)\.(?:to|com|de|in|us)/[\w\./]*)", 3)
_ArrayDisplay($aRegExp)
Hier ein Beispiel, wie es zuerst aussieht
<span class="smallfont"><b>Hidden-Text</b></span></td></tr><tr class="normalfont"><td class="inposttable" align="left"> <a href="http://a.imageshack.us/img816/3985/relu.png" target="_blank" title="Originalbild zeigen"><img style="width: 550px; height: 144.697px;" src="http://a.imageshack.us/img816/3985/relu.png" alt="" class="resizeImage" border="0"></a> </td></tr></tbody></table>
Dieser wird dann zu
<a href="http://a.imageshack.us/img816/3985/relu.png" target="_blank" title="Originalbild zeigen"><img style="width: 550px; height: 144.697px;" src="http://a.imageshack.us/img816/3985/relu.png" alt="" class="resizeImage" border="0"></a>
Gecuttet...
Danke für deinen Ansatz, nur eine Frage..
Das mit den Hostern (Du hast immer relink|ul etc. gemacht...)...
Es sollte so auch möglich sein oder...:
Ich erstelle einen Array, mit allen Hostern drin, diesen werde ich dann mit _ArrayToString mit dem Zeichen | splitten...
Anschliessend werde ich statt dort alles reinzuschreiben einfach den String nehmen...
Richtig?
Lg
Du hattest noch welche ohne href, wie bekommst du die denn?
Öhm, wie meinst du ohne href?
Es kann sein, dass folgendes vorhanden ist:Code<a href="security.php?url=aHR0cDovL3d3dy5yZWxpbmsudXMvZi8yMmFkZjI3NDEwM2JhYzkyMTVhMWM4ZDAzM2RkZmM=" target="_blank" title="http://www.relink.us/f/22adf274103bac9215a1c8d033ddfc"><span style="color: indigo;"><b>Download File</b></span></a>
Es kann jedoch auch sein, dass nur dies vorhanden ist:
So, ich habe es nun so mehr oder weniger...
Nur ein problem besteht noch...
Wie kann ich es verhindern, dass ich folgendes erwische
<a title="http://www.relink.us/view.php?id=a0854d8a0a63a96d760a1f5f7c552e" target="_blank" href="security.php?url=aHR0cDovL3d3dy5yZWxpbmsudXMvdmlldy5waHA/aWQ9YTA4NTRkOGEwYTYzYTk2ZDc2MGExZjVmN2M1NTJl">http://www.relink.us/view.php?id=a0854d8...d760a1f5f7c552e</a>
So, das Problem, welches ich hier habe, ist folgendes...
Das Ergebnis lautet hier
http://www.relink.us/view.php?id=a0854d8a0a63a96d760a1f5f7c552e
http://www.relink.us/view.php?id=a0854d8...d760a1f5f7c552e
Da es ja beides findet... Das 2. Ergebnis ist jedoch eigentlich das genau gleiche wie das 1...
So, wie kann ich dies verhindern?
Liebe Grüsse
Fr34k
#include <array.au3>
$string = '<a title="http://www.relink.us/view.php?id=a0854d8a0a63a96d760a1f5f7c552e" target="_blank" href="security.php?url=aHR0cDovL3d3dy5yZWxpbmsudXMvdmlldy5waHA/aWQ9YTA4NTRkOGEwYTYzYTk2ZDc2MGExZjVmN2M1NTJl">http://www.relink.us/view.php?id=a0854d8...d760a1f5f7c552e</a>'
$aResult = StringRegExp($string, '<a title="(.+)" target=', 1, 1)
_ArrayDisplay($aResult)
#cs ### Output ###
[0] http://www.relink.us/view.php?id=a0…d760a1f5f7c552e
#ce
Jep, aber dies ist ja nicht das Problem...
Schau, ich will immer den Link haben, es kann relink, uploaded, was auch immer sein, einfach den Link... Jedoch kann es immer anders aussehen, zbs so...
<a href="security.php?url=aHR0cDovL3d3dy5yZWxpbmsudXMvZi8yMmFkZjI3NDEwM2JhYzkyMTVhMWM4ZDAzM2RkZmM=" target="_blank" title="http://www.relink.us/f/22adf274103bac9215a1c8d033ddfc"><span style="color: indigo;"><b>Download File</b></span></a>
<a title="http://www.relink.us/view.php?id=a0854d8a0a63a96d760a1f5f7c552e" target="_blank" href="security.php?url=aHR0cDovL3d3dy5yZWxpbmsudXMvdmlldy5waHA/aWQ9YTA4NTRkOGEwYTYzYTk2ZDc2MGExZjVmN2M1NTJl">http://www.relink.us/view.php?id=a0854d8...d760a1f5f7c552e</a>
Dieser Ansatz hier war ned schlecht...
$aRegExp = StringRegExp($sString, "(http://(?:www\.)?(?:relink|ul|depositfiles|rapidshare|uploaded|netload|x7)\.(?:to|com|de|in|us)/[\w\./]*)", 3)
_ArrayDisplay($aRegExp)
Nur findet es da wie gesagt, das relink teilweise 2 mal, was auch logisch ist... ich müsste i-wie unterbinden können, dass der Punkt mehrmals hintereinander kommt... Er kann beliebig oft kommen, einfach nicht hintereinander!
Lg
Also ich kann mir kaum vorstellen, das alle 5 Quelltext-Ausschnitte die du jetzt gepostet hast auch genau so in ein und dem selben Quelltext vorkommen.Da fehlen ja teilweise HTML tags.
Wie wäre es denn, wenn du mal 1-2 zusammenhängenden, real vorkommende Quelltexte postest. Aus diesen Fetzen wird doch kein Mensch schlau.
Öhm, doch, dies ist so...
Dies sind alles Beiträge von Usern, die einen Posten einen Downloadlink mit HTML Tags zbs. so:
Andere Posten es so
Und so weiter...
Liebe Grüsse
Fr34k
Also die einfachste Möglichkeit wäre, die Funktion _ArrayUnique() zu verwenden.
[autoit]#include <Array.au3>
[/autoit][autoit][/autoit][autoit]$sString = '<a title="http://www.relink.us/view.php?id=a0854d8a0a63a96d760a1f5f7c552e" target="_blank" href="security.php?url=aHR0cDovL3d3dy5yZWxpbmsudXMvdmlldy5waHA/aWQ9YTA4NTRkOGEwYTYzYTk2ZDc2MGExZjVmN2M1NTJl">http://www.relink.us/view.php?id=a0…d760a1f5f7c552e</a>'
[/autoit][autoit][/autoit][autoit]$aRegExp = StringRegExp($sString, "(http://(?:www\.)?(?:relink|ul|depositfiles|rapidshare|uploaded|netload|x7)\.(?:to|com|de|in|us)/[\w\./]*)", 3)
[/autoit][autoit][/autoit][autoit]$aRegExpUnique = _ArrayUnique($aRegExp)
_ArrayDelete($aRegExpUnique, 0)
_ArrayDisplay($aRegExpUnique)
[/autoit]Die einfachste, welche nicht funktioniert^^
http://www.relink.us/view.php?id=a0854d8a0a63a96d760a1f5f7c552e
http://www.relink.us/view.php?id=a0854d8...d760a1f5f7c552e
Das ist 1 Link, es findet beide Links, sollte aber nur den oberen finden, also nicht die abkürzung.
Daher funktioniert _ArrayUnique leider nicht.
Die einzige Möglichkeit denke ich, ist, dass man per RegEx überprüft, dass nicht 2 Punkte aufeinander folgen.
Nur, wie geht das?
Die einfachste, welche nicht funktioniert^^
Funktioniert schon, nur nicht so wie du dir das vorgestellt hast
Für dich sind vielleicht beide Links/Strings gleich, aber für AutoIt (und jede andere Programmier-/Skriptsprache) sind das 2 unterschiedliche Links/Strings
Wie auch immer:
Hiermit werden alle Arrayeinträge gelöscht, die "..." enthalten!
#include <Array.au3>
[/autoit][autoit][/autoit][autoit]Dim $aRegExp[1] = ['http://www.relink.us/view.php?id=a0854d8a0a63a96d760a1f5f7c552e']
_ArrayAdd($aRegExp, 'http://www.relink.us/view.php?id=a0854d8a0a...96d760a1f5f7c552e')
_ArrayAdd($aRegExp, 'http://www.relink.us/view.php?id=a088a0a...96d760a1f5f7c552e')
_ArrayAdd($aRegExp, 'http://www.relink.us/view.php?id=a0854d8a096d760a1f5f7c552e')
For $i=UBound($aRegExp)-1 To 0 Step -1
If StringInStr($aRegExp[$i], "...") Then _ArrayDelete($aRegExp, $i)
Next
_ArrayDisplay($aRegExp)
ZitatFür dich sind vielleicht beide Links/Strings gleich, aber für AutoIt (und jede andere Programmier-/Skriptsprache) sind das 2 unterschiedliche Links/Strings
Warum sollten das für mich gleiche Strings sein?!
Thx für das, nur eine Frage, gibt es einen Grund, warum du das ganze rückwärts machst?
Lg
gibt es einen Grund, warum du das ganze rückwärts machst?
Einen ganz wichtigen sogar
Würde man das vorwärts laufen lassen, dann würdest du immer, wenn du etwas in dem Array löschst, dass Array verkürzen. Die For Schleife allerdings merkt davon nix. Irgendwann würdest du also auf einen Array Index zugreifen, der dann nicht mehr existiert.
Und noch ein Grund:
Beim ersten For Durchlauf mit $i = 0 würde beim löschen dieses Array-Werts Array[0], alle anderen Array Indexe um 1 erniedrigt werden:
Array[1] zu Array[0] werden,
Array[2] zu Array[1] werden,
Array[3] zu Array[2] werden, usw.
Beim nächsten For Durchlauf mit $i = 1 würde dann ein Array Eintrag übersprungen werden:
Ehemals Array[1] der ja durch das löschen zu Array[0] geworden ist