phpbar.de logo

Mailinglisten-Archive

[php] Regular Expression

[php] Regular Expression

Sebastian Mendel lists at sebastianmendel.de
Fre Mar 4 08:54:37 CET 2005


harald_hanek at hotmail.com wrote:

> wie kann ich in einem Dokument alle Links finden die noch keine PHPSESSID am Ende drann haben und diese
> ersetzen (bzw. erweitern), in dem ich die PHPSESSID drannhänge.

was spricht gegen session.use_trans_sid in der php.ini ?


> Aktion a la preg_replace bekomme ich mangels Wissen über den Korrekten aufbau des Patterns nicht hin, also in
> dem ich ausschließe, etc.

du musst auch beachten ob bereits ein Parameter anhängt, also ob du &SID 
oder ?SID, und ob eventuell ein #abschnitt anhängt

seite.php
seite.php?para=1&para=2#abschnitt2


> <?php
> 
>   $pattern = '=^(.*)<a(.*)href\="?(\S+)"([^>]*)>(.*)</a>(.*)$=msi'; // Findet erst mal alle Links
>   $replace = "content.php......und die Session drann";
>   $text = preg_replace($pattern, $replace, $document);
> ?>

// Findet erst mal alle Links
// findet:
// ?para=1 in link.htm?para=1#abschnitt2
// oder ?para=1&para=2 in link.htm?para=1&para=2

// einmal mit ?
$pattern = '|<a[^>]+href=\"[^\?#\"]*\?([^#\"])*|msi';
$replace = '\\1&' . SID; // &amp; ?

// einmal ohne ?
$pattern = '|<a[^>]+href=\"[^\?#\"]*(?:#|\")+|msi';
$replace = '?' . SID . '\\1';

irgendwie so, habs jetzt nicht probiert


$text = preg_replace( $pattern, $replace, $document );


> Vieleicht kann mir jemand auf die Sprünge helfen. Danke und schönen Tag noch.


Und was ist mit "header( 'Location: ...' );" und Formularen?



-- 
Sebastian Mendel

www.sebastianmendel.de
www.sf.net/projects/phpdatetime | www.sf.net/projects/phptimesheet

php::bar PHP Wiki   -   Listenarchive