Archiv verlassen und diese Seite im Standarddesign anzeigen : http ausfiltern (text) - krieg den pattern nich hin ...
habe folgende text-datei:
Der Hund schläft htt p://google.dein der Maschine - immernoch ...
da will ich nun das ganze in html umwandeln und de url-adresse anklickbar machen. hatte erst die idee:
<?PHP
//
// Text, der durchsucht werden soll
//
$subject = 'Der Hund schläft htt p://google.de in der Maschine - immernoch ...';
//
// Der Reguläre Ausdruck
//
$pattern = '#htt p://(.*).de#is';
//
// Ersatzstring
//
$replace = '*\1*';
//
// RegExp auswerten, Ersetzung durchführen
//
$result = preg_replace($pattern, $replace, $subject);
//
// Ergebnis ausgeben
//
echo '<p>Ergebnis: '.htmlspecialchars($result).'</p>';
?>
bekomm ich aber nich was ich will sondern Der Hund schläft *google.de in*r Maschine - immernoch ...
egal ma wegen dem text - wie bekomme ich das hin, dass ich nur de url in die * setzen kann? Das leerzeichen in dem htt p ist wegen dem posten hier - müsst ihr mal wegdenken ...
thx4help
penizillin 23-10-2006, 21:45 ungreedy modifier ausprobiert?
penizillin 23-10-2006, 21:48 http://regexp-evaluator.de/tutorial/modifier/
Original geschrieben von penizillin
http://regexp-evaluator.de/tutorial/modifier/
ha :D was denkst du wo ich rumhüpp :D genau auf dieser seite - aber ich versteh trotzdem nicht, wie ich das pattern so mach, dass der nach dem link das freizeichen erkennt und die nächste stelle sucht ... :(
penizillin 23-10-2006, 21:56 du sollst den modifier einbauen - habe ich doch gesagt.
Original geschrieben von penizillin
du sollst den modifier einbauen - habe ich doch gesagt.
OAH und wie und wo und was?
ich hab da nich soviel ahnung von !
penizillin 23-10-2006, 22:01 gegenfrage - welche modifier verwendest du momentan in deinem pattern?
Er hat GANZ KLAR gesagt:
ungreedy modifier einbauen.
wie - curser positionieren, entsprechende tasta (buchstaben) tippen
wo - na, an die stelle wo die modifier hin gehören. da gibt es nicht viele (eine!)
was - na, den entsprechenden buchstaben
Original geschrieben von penizillin
gegenfrage - welche modifier verwendest du momentan in deinem pattern?
öhm siehst du oben den code? :D
Original geschrieben von TobiaZ
Er hat GANZ KLAR gesagt:
ungreedy modifier einbauen.
wie - curser positionieren, entsprechende tasta (buchstaben) tippen
wo - na, an die stelle wo die modifier hin gehören. da gibt es nicht viele (eine!)
was - na, den entsprechenden buchstaben
ohja hab genau alles kapiert *grübel* - ne doch ne :D
onemorenerd 23-10-2006, 22:07 Vorsicht, ungreedy kanns auch in die Hose gehen. Das Beispiel da oben ist sicher nur eine Möglichkeit von vielen, die dir begegnen, sonst hättest du nicht zu regulären Ausdrücken gegriffen. Und dank deiner (entfernten) Leerzeichen ist das Beispiel leider nicht das beste.
Mir fiel sofort das hier ein:
http://google.deinen.nachbarn
greedy: http://google.dein.museum (also alles)
ungreedy: http://google.de (also u.U. zu wenig)
Das ist sicher auch nicht das beste Beispiel, aber ich hoffe du hast den Punkt erkannt.
penizillin 23-10-2006, 22:08 du hast doch eine richtig gute seite entdeckt - warum nicht mal durchs tutorial lesen - dann weißt du auch, was du machst, zumindest was die syntax angeht.
onemorenerd hat natürlich recht - in der form ist der ausdruck nicht so flexibel, wie man ihn z.b. in einem forum gern hätte.
Original geschrieben von onemorenerd
Das ist sicher auch nicht das beste Beispiel, aber ich hoffe du hast den Punkt erkannt. Nö, nicht wirklich. ;)
[ ] sollte er deiner meinung nach "nachbarn" komplett finden?
[ ] oder sollte er das gar nicht unterstreichen? aber woran machst du das fest?
nebenbei bemerkt - ich arbeite mich grade durch das tut - nur wenn ich nich versteh wie ich das rausfilter - sry - in dem tut is das mit [ url]...[/ url] erklärt - das hab ich ja nicht!
penizillin 23-10-2006, 22:14 http://tut.php-q.net/regex.html#u11
onemorenerd 23-10-2006, 22:22 @Tobiaz: Hab nachbarn in museum geändert, was ja eine erlaubte TLD ist. Hätte auch noch ein .de an nachbarn anhängen können ... wie auch immer, der obige Ausdruck ist extrem ungenau und ein Ausdruck für exaktes Matchen wäre extrem kompliziert.
Die meisten Ausdrücke die ich kenne, verlangen Leerzeichen rund um die URL (maximal noch ein Satzzeichen am Ende, aber das ist schon selten) und das hat seinen Grund.
jahlives 24-10-2006, 07:48 Darf denn eine URL ein Leerzeichen enthalten ? Wohl nicht ohne URLEncode. Also warum denn nicht
$reg = '/http:\\\/\\\/[^\\\s]*/';
Gruss
tobi
|