Mailinglisten-Archive |
Hello Marcel,
> $text = '
> <a href="foo.php">link1</a><br>
> <a href="foo.php?foo=bar">link2</a><br>';
> $suchmuster = '/href="(.*?)"/is';
> $text = preg_replace($suchmuster,
> "/href=\"$1".(!stristr("$1","?")? "?" :
> "&")."foo2=bar2\" ", $text);
das ist mit preg_replace_callback() wesentlich sauberer zu lösen.
Vorschlag:
$text = '<a href="foo.php">link1</a><br>
<a href="foo.php?foo=bar">link2</a><br>';
$text = preg_replace_callback(
'/href="[^?"]+([^"]*)/', // sucht Link und merkt sich den 'query-string'
'fuege_parameter_hinzu',
$text
);
function fuege_parameter_hinzu ( $fund ) {
// wenn der 'query-string' gefunden wurde, ist er in $fund[1]
// (entspricht dem ersten Klammernpaar im Ausdruck)
if ( empty( $fund[1] ) ) {
return $fund[0] . '?foo=bar';
} else {
return $fund[0] . '&foo=bar';
}
}
Grüße,
oliver
php::bar PHP Wiki - Listenarchive