PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : html tags in einem Hyperlink-Tag entfernen ?


equal
10.07.2008, 17:52
Hallo ich bin neu hier und habe ein Problem, an dem ich schon eine Weile knabbere.

ich bekomme aus eine Datenbank folgenden Text geliefert(vorher wurde das Wort admin fett gedruckt
<b>Admin</b>istrator, <b>admin</b><a href=mailto:root@<b>admin<b>istrator.de>User<b>admin</b>istration</a>

wie euch sicher auffällt ist die Ersetzung des wortes admin auch in der Verlinkung passiert, was natürlich bei Klick die Adresse falsch ausgibt.

Nun suche ich eine Lösung wie ich das wort admin innerhalb des hyperling-tags bereinigt bekomme. Also die fett-tags sollen da raus, sollen aber außerhalb weiter bestehen bleiben.

Danke schon mal im Voraus

vielleicht gibts auch gleich beim Einfügen dieser Tags eine Lösung.
Folgenden Code verwende ich dafür (kann man vermeiden, dass die fett-tags innerhalb des Links eingefügt werden) ?


$suchstring = "admin";
$string = "Administrator, admin<a href=mailto:root@administrator.de>Useradministration</a>";
$pattern = '/(.*?)('. $suchstring .')(.*?)/im';
$string1 = preg_replace($pattern, '$1<b>$2</b>', $string);


ich hoffe, ich hab mich nicht vertippt und es ist klar, was ich will ;-)


Crusade
10.07.2008, 21:18
Wär schon besser nicht das Ergebniss zu berichtigen, sondern die Quelle ;).

$subject = 'Administrator, admin<a href=mailto:root@administrator.de>Useradministration</a>';
$pattern = '#(?<!@)(admin)#is';
$replace = '<b>\1</b>';
$result = preg_replace($pattern, $replace, $subject);

<b>Admin</b>istrator, <b>admin</b><a href=mailto:root@administrator.de>User<b>admin</b>istration</a>

Firefall
11.07.2008, 00:02
Dein Link ist Schrott. Der href-Wert, also die mailto-URL, gehört in doppelte Hochkommata (").

equal
13.07.2008, 22:56
hey danke leute,

ihr habt mir sehr geholfen. Hat geklappt.

Grüße

equal
21.07.2008, 14:21
mir ist grade aufgefallen, dass die regexp nur bei den Domain-Namen nach dem @ funktioniert. Bei admin@administrator.de funktioniert das nicht.Danke und Grüße

Crusade
23.07.2008, 17:52
$subject = 'Administrator, admin<a href="mailto:root@administrator.de">Useradministration</a>';
$pattern = '#(<[^>]+>|admin)#i';
$result = preg_replace_callback(
$pattern,
create_function(
'$treffer',
'if (strtolower($treffer[0]) == "admin") {
return "<b>".$treffer[0]."</b>";
} else {
return $treffer[0];
};'
),
$subject
);
echo $result;

equal
24.07.2008, 16:37
das is ja mal geil ... *hüpf*

SUPER DANKE!