Antworten
Das koennte funktionieren:
Code: In Zwischenablage kopieren (nur IE)
Aber eigentlich empfehle ich fuer HTML immer XPath statt Regular Expressions. XPath ist simpler und zuverlaessiger. Dein Problem laesst sich damit ganz einfach loesen:
Code: In Zwischenablage kopieren (nur IE)
http://de2.php.net/manual/de/function.dom-domdocument-loadhtmlfile.phphttp://de2.php.net/manual/de/function.dom-domxpath-query.php2.
Ich würde preg_replace nehmen.
\s ist "any whitespace character", also nur Leerzeichen etc; ".*" passt wohl eher.
Code: In Zwischenablage kopieren (nur IE)
edit: Kann man das eigtl nicht auch mit JS machen?
3.
@--blubb--: Danke für den Tipp . das funktioniert so ganz wunderbar!
@pekos: Auch für Deinen Tipp danke. Könnst Du mir - für einen Laien - die beiden Ausdrück mal kurz erklären, also was da genau gesucht wird und passiert.
4.
[^>] steht fuer jedes beliebige Zeichen ausser ">". Das hab ich vor und hinter id="abc" benutzt, um beliebige andere Attribute zuzulassen. Das /div> am Ende hab ich weggelassen, weil ich angenommen hab diese DIVs enthalten bloss Text und keinen weiteren Markup. Das muesstest du also gegebenfalls ergaenzen. Der i-Modifier macht das Ganze case-insensitive und der s-Modifier sorgt dafuer, dass der Punkt auch Zeilenumbrueche erfasst. Standardmaessig sind Regexe naemlich nicht text- sondern zeilenorientiert.
Der XPath ist eigentlich zu schlicht um ihn zu erklaeren. Lies dir stattdessen mal das hier durch:
http://www.w3schools.com/xpath/xpath_syntax.asp5.
Danke für die Info! Jetzt wird mir langsam einiges klarer ... ich muss da wohl mal üben. Danke!
6.
Ähm . ein Problem hab ich nun doch noch. Wenn ich den Ausdruck so erweitern möchte, damit es Alternativen gibt, wie muss ich das notieren?
Also z.B. soll div oder p oder textarea gefunden werden?
Danke
7.
Ersetze in der Regex:
Code: In Zwischenablage kopieren (nur IE)
durch:
Code: In Zwischenablage kopieren (nur IE)
8.
Ich nochamal ;o) Wenn ich folgendes notiere, dann klappt es, sofern die Daten sich zw. einem div-Tag befinden.
Code: In Zwischenablage kopieren (nur IE)
Wenn ich den Ausdruck nun aber felexibler habe möchte und auch p, textarea, etc. berücksichtigen möchte, veruschte ich das hier:
Code: In Zwischenablage kopieren (nur IE)
Das klappt aber irgendwie nicht? *kopfrauch*
Habt Ihr nochmal nen Tipp für mich?
Danke
9.
Mit den eckigen Klammern gibt man Alternativen fuer einen
einzigen Buchstaben an. [div|p|textarea] funktioniert also nicht. Um alternative
Strings anzugeben, benutzt man runde Klammern:
Code: In Zwischenablage kopieren (nur IE)
Ausserdem brauchst du einen Back-reference (\1) um dafuer zu sorgen, dass opening-tag und closing-tag zueinander passen.
Entschudige, dass ich drauf rumreite, aber mit XPath waer auch
das einfacher:
Code: In Zwischenablage kopieren (nur IE)
10.
Code: In Zwischenablage kopieren (nur IE)
Das müsste in runde Klammern, eckige Klammern sind für Charakterklassen; [ab]{1} passt zB auf "a" oder "b".
s.a.
http://www.php-resource.de/tutorials/read/10/1 ;)
edit: o, zu spät.
11.
Vielen Dank, jetzt klappt es so wie ich es wollte! Und ja, ich geb Dir recht XPath sieht recht einfach aus. Ich werde mich damit mal intensiv beschäftigen.
12.
Oki . ich verspreche es .. die letzte Frage zu meinem Problem ;o) Wenn ich einen String ersetzte, der eine " enthält, wird dieses Zeichen maskiert \" .. wie kann ich sowas unterdrücken?
13.
Sind bei dir vielleicht "Magic Quotes" eingeschaltet?
[doc]get_magic_quotes_gpc[/doc]
14.
Ja, die sind wohl eingeschaltet, aber ein set_magic_quotes_runtime(0) hilft da auch nicht weiter.
15.
magic_quotes_gpc und magic_quotes_runtime haben wenig miteinander zu tun! magic_quotes_gpc werden bereits in der Startphase des Skripts, wenn die Arrays $_GET, $_POST und $_COOKIE bevoelkert werden, angewendet. Die kann man also nur in der php.ini abschalten. Man kann sie aber rueckgaengig machen mit stripslashes().
[doc]stripslashes[/doc]
16.
Klappt bestens, Danke nochmal .. ähm ja, morgen sollte auch mein bestelltes PHP-Buch ankommen ;o)