regular expressions: bis zum Zeilenende $

Hier können allgemeine Fragen zu PHP gestellt und diskutiert werden.
SebastianG
ConPresso-User
Beiträge: 72
Registriert: 04.04.2009 20:01
Hat sich bedankt: 29 Mal
Danksagung erhalten: 3 Mal

regular expressions: bis zum Zeilenende $

Beitrag von SebastianG »

Kennt sich jemand mit regular expressions sehr gut aus?

Oftmals habe ich Text, bei dem ich ab einem Suchstring bis zum Zeilenende löschen möchte, also zB:

....http://www.blab.de/">blab.....
....http://www.blub.de/">blub.....

Nun möchte ich suchen nach
">
und ab da löschen.

Zeilenende = $

Wer weiß, wie das geht?
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7100
Registriert: 01.01.1970 02:00
Hat sich bedankt: 102 Mal
Danksagung erhalten: 916 Mal

Beitrag von MarkusR »

:idea: Da das mit HTML nicht geht habe ich das Thema zu "PHP" verschoben.


Für Deinen Zweck kannst Du auf Reguläre Ausdrücke verzichten und die "normalen" PHP-Funktionen wie substr und strpos benutzen.

$string = "....http://www.blab.de/">blab.....";
$suche = '">';
$anfang = substr($string,0,strpos($string, $suche));

da Du "> mit drin haben willst muß die Länge dieser Zeichen noch dazugerechnet werden, also

$anfang = substr($string,0,strpos($string, $suche)+strlen($suche));
oder einfach angehängt
$anfang = substr($string,0,strpos($string, $suche)).$suche;

siehe
http://de.php.net/manual/de/function.substr.php
http://de.php.net/manual/de/function.strpos.php

ungetestet...

_______


Wenn es denn regexp sein müssen dann vielleicht

$string = "....http://www.blab.de/">blab.....";
$suche = '">';
$teile = preg_split ("/".preg_quote($suche)."/", $string);
$anfang = $teile[0].$suche;
SebastianG
ConPresso-User
Beiträge: 72
Registriert: 04.04.2009 20:01
Hat sich bedankt: 29 Mal
Danksagung erhalten: 3 Mal

Beitrag von SebastianG »

es geht wirklich um regexp, die ich für suche-ersetzen in einem text-editor (textpad) verwende.
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7100
Registriert: 01.01.1970 02:00
Hat sich bedankt: 102 Mal
Danksagung erhalten: 916 Mal

Beitrag von MarkusR »

Na gut. Mein Texteditor (EditPlus) kommt mit
Find: (.+">).*
Replace: \1
gut zurecht.
SebastianG
ConPresso-User
Beiträge: 72
Registriert: 04.04.2009 20:01
Hat sich bedankt: 29 Mal
Danksagung erhalten: 3 Mal

Beitrag von SebastianG »

danke:)

beim textpad funzt es nun so:

">*.*$
Benutzeravatar
balu
ConPresso-Entwickler
Beiträge: 1748
Registriert: 01.01.1970 02:00
Hat sich bedankt: 81 Mal
Danksagung erhalten: 133 Mal

Beitrag von balu »

Hi,

Das hier sollte reichen:

">.*$

. steht für ein beliebiges Zeichen, * dafür, dass dieses Zeichen keinmal oder beliebig oft vorkommen darf und $ für das Zeilenende.

Wenn Du hinter dem > ein * machst, muss das > Zeichen nicht vorkommen. Dann wird also evtl. auch nur ab einem " gelöscht.

Balu
Bartels.Schöne
ConPresso Support & Development
SebastianG
ConPresso-User
Beiträge: 72
Registriert: 04.04.2009 20:01
Hat sich bedankt: 29 Mal
Danksagung erhalten: 3 Mal

Beitrag von SebastianG »

Könnt Ihr mir bitte helfen:

a) Wie würdet Ihr eine Auswahl zwischen 2 Suchstrings definieren?

Also zB einen HTML-Kommentar.

Also am Anfang:
<!--

und Ende:
-->

Das Ende ist klar mit o.g.:
-->.*$

Anfang dann wohl
<!--.*^


Im Textpad kriege ich es hin mit :

^<!--.*$*.-->


Doch im Dreamweaver kommt Syntaxfehler
invalid qualifier:
*.-->


b) Und ist es möglich, solche Suchmuster für Anfang+Ende über mehrere Zeilen zu definieren?

Vielen Dank!
Benutzeravatar
balu
ConPresso-Entwickler
Beiträge: 1748
Registriert: 01.01.1970 02:00
Hat sich bedankt: 81 Mal
Danksagung erhalten: 133 Mal

Beitrag von balu »

Das ist nicht so einfach, aber glücklicherweise haben das schon andere vor Dir überlegt :-)

http://ostermiller.org/findhtmlcomment.html

Wobei ich nicht ganz sicher bin, ob das schon ausreicht, aber probier das mal. Sonst solltest Du hier mehr finden:

https://www.google.de/search?q=regular+ ... ml+comment

Balu
Bartels.Schöne
ConPresso Support & Development
SebastianG
ConPresso-User
Beiträge: 72
Registriert: 04.04.2009 20:01
Hat sich bedankt: 29 Mal
Danksagung erhalten: 3 Mal

Beitrag von SebastianG »

Vielen Dank!

In DW funktioniert der im 1.Link erwähnte 2.Vorschlag:

Code: Alles auswählen

\<![ \r\n\t]*(--.*--[ \r\n\t]*)\>