|
You last visited: Today at 01:39
Advertisement
StringRegExp Problem
Discussion on StringRegExp Problem within the AutoIt forum part of the Coders Den category.
04/23/2011, 18:04
|
#1
|
elite*gold: 52
Join Date: Oct 2010
Posts: 1,998
Received Thanks: 389
|
StringRegExp Problem
Hallo Elitepvpers,
ich habe zurzeit ein Problem mit StringRegExp. Undzwar habe ich den String
PHP Code:
title="Holzfäller Stufe 0" shape=CIRCLE alt="Holzfäller Stufe 0" coords=101,33,28 href="build.php?id=1"
und möchte gerne den Titel auslesen wobei href dabei hilft das richtige zu finden, da sich das ganze 18 mal wiederholt (build.php?id=1 bis build.php?id18). In href setze ich ebenfalls 'build.php?id=' & $i & '"' ein. Allerdings gibt es nun ein Problem undzwar gibt er immer nur den Titel von der ersten Stelle, die im Quelltext vorkommt zurück wenn ich für href .*? einsetze. Wenn ich nichts einsetze kommt immer eine Fehlermeldung. Soweit ich sehe liegt das am ? im Link.
Und jetzt meine Frage was muss ich für den Link einsetzen, dass der Link bis zur Zahl ignoriert wird, die ich die mittels der Variable einsetze.
|
|
|
04/23/2011, 19:16
|
#2
|
elite*gold: 0
Join Date: Jan 2010
Posts: 360
Received Thanks: 249
|
was genau willst du jetzt auslesen?
den titel? was hat der mit href zu tun.
oder willst du die ID auslesen?
|
|
|
04/23/2011, 19:35
|
#3
|
elite*gold: 52
Join Date: Oct 2010
Posts: 1,998
Received Thanks: 389
|
Ich will den Titel auslesen. Und da das objekt 18 mal existiert und man die ambesten mithilfe des hrefs ermitteln kann möchte ich href benutzen nur eben, dass die zahl am ende mit einer Variable ersetzt wird.(Befindet sich in einer For schleife) Nur gibt es jetzt noch ein anderes Problem undzwar ist das ? ja eigentlich ich sag jetzt mal ein Befehl und somit kann ich den Link so nicht stehen lassen, da er sonst nicht mit dem Quelltext übereinstimmt.
|
|
|
04/23/2011, 19:46
|
#4
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
lies doch einfach alle in ein array, inklusive der id :s
|
|
|
04/23/2011, 20:02
|
#5
|
elite*gold: 52
Join Date: Oct 2010
Posts: 1,998
Received Thanks: 389
|
Kann man nicht den Link bis zur Zahl ersetzten mit was änlichem wie ".*?" weil ich wollte dann in die For schleife noch eine If abfrage einbauen, ob es sich um Holzfäller oder Eisenmine handelt oder so und dann gleich mit GuiCtrlSetData den wert eines Controls das eben auch aus einem Array besteht und ich das ganze dann kurz und einfach gelöst hätte.
Wenn nicht löse ich das ganze halt per Umwege.
|
|
|
04/23/2011, 20:07
|
#6
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
verstehe nicht warum du eine schleife bauen willst, wenn du doch alles aufeinmal in ein array einlesen kannst...
Code:
$regExp = StringRegExp($string, 'title="(.+?)" .*? href="build.php\?id=(\d+)"', 4)
das würde dir beispielsweise ein array von arrays ausgeben, welche jeweils name mit build-id beinhalten.
man kann das ganze natürlich auch sehr kompliziert über mehrere schleifen laufen lassen.
ich jedoch bevorzuge eigentlich immer den leichtesten weg :s
|
|
|
04/23/2011, 20:25
|
#7
|
elite*gold: 52
Join Date: Oct 2010
Posts: 1,998
Received Thanks: 389
|
Ich schau mir das gleich mal genauer an. Aber eigentlich habe ich nur den Backslash vor dem ? gesucht. Aber mal eine andere Frage warum gibt er mir hier
PHP Code:
$string = '<AREA title="Holzfäller Stufe 0" shape=CIRCLE alt="Holzfäller Stufe 0" coords=101,33,28 href="build.php?id=1"><AREA title="Getreidefarm Stufe 0" shape=CIRCLE alt="Getreidefarm Stufe 0" coords=165,32,28 href="build.php?id=2">' for $i = 1 to 2 $class = StringRegExp($string, 'title="(.*?)" shape=CIRCLE alt=".*?" coords=.*? href="build.php\?id='&$i&'"', 1) ConsoleWrite($class[0]&@CRLF) next
immer nur Holzfäller Stufe 0 zurück?
|
|
|
04/23/2011, 20:30
|
#8
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
weil das immer vorne steht?
ich mein du suchst schließlig "a .*? b"
obs da nu a .*? c .*? b gibt oda nich is egal^^ es wird immer a ausgegeben weils vor b steht. alles dazwischen ignorierst du ja einfach...
wie gesagt wenn du es umständlich über schleifen machen willst haste da schon mehr probleme bei...
am einfachsten wäre es einfach alles auf einmal einzulesen.
|
|
|
04/23/2011, 20:41
|
#9
|
elite*gold: 52
Join Date: Oct 2010
Posts: 1,998
Received Thanks: 389
|
Achso ok vielen Dank.
Endlich kann ich weiter machen 
Ist aber eigentlich blöd dasses nicht so klappt.
|
|
|
04/23/2011, 20:57
|
#10
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by BlackHybrid
Achso ok vielen Dank.
Endlich kann ich weiter machen 
Ist aber eigentlich blöd dasses nicht so klappt.
|
klappen würde es, wenn du das ganze etwas kleverer aufbaust.
allerdings ist regexp dafür konzipiert, einmal die engine zu starten, um damit einen großen string am stück zu parsen.
wenn du das ständig für kleine stückchen des strings wiederholen würdest, hättest du dabei einen riesen effizienzverlust...
|
|
|
04/23/2011, 21:00
|
#11
|
elite*gold: 0
Join Date: Jan 2010
Posts: 360
Received Thanks: 249
|
Code:
$string = '<AREA title="Holzfäller Stufe 0" shape=CIRCLE alt="Holzfäller Stufe 0" coords=101,33,28 href="build.php?id=1"><AREA title="Getreidefarm Stufe 0" shape=CIRCLE alt="Getreidefarm Stufe 0" coords=165,32,28 href="build.php?id=2">'
$count = 1
While 1
$tmp = StringInStr($string, "title=", True, True, $count)
If $tmp == 0 Then
ExitLoop
Else
$out = StringRegExp(StringMid($string, $tmp), 'title="(.*?)"', 1)
$count = $tmp + 6
ConsoleWrite($out[0] & @CRLF)
EndIf
WEnd
|
|
|
 |
Similar Threads
|
[Hilfe]Ungelöstes Server Erstell Problem, ausführliche Problem Schilderung
09/15/2011 - Flyff Private Server - 8 Replies
Hey Com!
Ich hoffe, dass dieser Thread nicht als Spamthread angesehen wird, da ich ja gestern schon einen zu diesem Thema eröffnet habe.
Sorry wenn ich euch mit dem Thema nerve, aber ich sitze nun schon 4 Tage über dem Problem, und finde einfach keine Lösung.
Nun werde ich hier allerdings eine ausführlichere Beschreibung des Problems geben.
Mein Problem ist, dass ich den Windows Mssql Server 2008/2005 aus Sedrika's TuT nicht installieren kann, da sobald ich ihn immer installiere...
|
StringRegExp Problem ...
04/12/2011 - AutoIt - 2 Replies
Moin,
Ich hab ein kleines Problem...
Und zwar habe ich dies:
<td>Level:</td>
<td>30</td>
Als testdatei zum auslesen unter test.html gespeichert.
Ich möchte den Wert zwischen <td></td> auslesen.
|
StringRegExp - Makros ?
03/24/2011 - AutoIt - 3 Replies
Hey ich wollt ma fragen ob bei StringRegExp Makros funzen
bei mir geht das nämlich nich ^^
ich wollt halt das man in diesem Script :
#include <WebTcp.au3>
#include <String.au3>
_AutoItObject_Startup()
TCPStartup()
|
StringRegExp
11/07/2010 - AutoIt - 0 Replies
Es geht um YT halt :P
Je nach Suchanfrage gibt es entweder einen String nach dem Schema
<a href="/watch?gl=DE&client=mv-google&h l=de&v=ltlsfOOkBqg">Hey YOUTUBE!!!</a>
oder eben 2 nur dass der 2. wie folgt aussieht
<a href="/watch?gl=DE&client=mv-google&h l=de&v=vQqpMukDSP4"><img src="http://i.ytimg.com/vi/vQqpMukDSP4/defaul t.jpg?w=120&h=90&sigh=89rqZ2bCAF69IhXVyyTV XK_DaXI" alt="Video" width="120" height="90" style="border:0;margin:0px;" /></a>
Mein bisheriger Pattern sieht so aus
<a...
|
All times are GMT +1. The time now is 01:39.
|
|