perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 28
Click for quality!




11.02.2012 / 20:42

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragProblem mit RegEx und ersetzen
Seitenanfang
Hi, ich hab folgendes Problem:
Ich habe einen längeren Text. In diesem Text $text kommen auch mehrere Links vor, etwa derart:
<a href="http://www.xyz.tld">Name-xyz</a>

Ich will nun die Zeichenfolge "xyz" gegen eine andere Zeichenkette "abc" austauschen, aber nur, wenn sie in einem Link auftaucht, also innerhalb der Zeichen <a href=...</a>

Ansonsten soll die Zeichenkette ausserhalb der <a></a>-Tags unverändert bleiben.
Das gelingt mir nun überhaupt nicht, weil "xyz" mehrfach auftauchen kann, so dass
$text =~ s/<a href=(.*?)xyz(.*?)</a>/<a href=$1abc$2<\/a>/g;
nicht funktioniert.

Hat jemand einen Tipp?

Datum: 08.08.2005-13:08

Beitragre: Problem mit RegEx und ersetzen
Seitenanfang
sollte ich dich richtig verstehen, was ich ehrlich gesagt nicht glaube, solltest du zuerst mal abfragen ob xyz im href und im namen vorkommt und erst dann ersetzen:

while( $text =~/<a href=(.*?)(.*?)(.*?)>Name-$2<\/a>/g ) {
# $2 entspricht in dem fall also xyz; die substitution wird also nur durchgeführt wenn im href und im name- der gleiche ausdruck vorkommt

my $old_href = $1 . $2 . $3;
my $new_href = $1 . 'abc' . $3;
my $xyz = $2;

$text =~ s/<a href=$old_href>Name-$xyz<\/a>/<a href=$new_href>Name-$xyz<\/a>/;
}

gib mal ein konkretes beispiel an was du genau machen willst. (nicht mit xyz)

mfG

Datum: 08.08.2005-15:43

Beitragre: Problem mit RegEx und ersetzen
Seitenanfang
Hi Alexander,
man muss es wohl so machen wie Du sagst, mit Abfrage und while. Das läuft jetzt auch, ich hatte allerdings gedacht, es gäbe eine noch elegantere Lösung mit Regulären Ausdrücken (bin Anfänger). Aber es läuft jetzt.

Diese Prozedur war nötig:
- In einem Suchscript für die Website (http://www.forum-gesundheitspolitik.de)
werden die Fundstellen bei der Ausgabe der Suchergebnisse farblich besonders herausgehoben
- Das passiert vorher mit (verkürzt)
$text =~ s/($suchbegriff)/$fettanf$1$fettend/g;
wobei $fettanf und $fettend HTML-Formatierungen sind
- Nun habe ich aber irgendwann gemerkt, wenn Suchbegriff z.B. "redaktion" ist, und im Text taucht ein Link auf "<a href="http://spiegel.de/redaktion">Spiegel-Redaktion</a>
dann wird auch die URL verhunzt, also auch dort eine Hervorhebung gemacht.
- Diese Hervorhebung innerhalb von <a href ... </a> muss also wieder raus.

Das mache ich jetzt mit einer while-Schleife.
Ich hatte gehofft, es ginge mit einem einzigen Ersetzen-Befehl.

Danke für Deine Mühe.

Datum: 08.08.2005-16:21

-






-
-