Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wyrażenia regularne - problem
Forum PHP.pl > Forum > PHP
kampio
Witam mam dosyć dziwny bląd który przeszkadza mi w tworzeniu mojego dziwnego skryptu:

<?php
$lol1=<<<EOS
{for}dsadasdasdasd
dsadasd
dsad
ad
as
d
as
d
asd{for}
EOS;

$lol2="{for}dasda das dasd sad sda dsad a{for}";

preg_match('/\{for\}(.*?)\{for\}/',$lol1, $match);
echo("<pre>");
print_r($match);
echo("</pre>");
echo $match[1];

preg_match('/\{for\}(.*?)\{for\}/',$lol2, $match2);
echo("<pre>");
print_r($match2);
echo("</pre>");
?>


Dlaczego w $match niechce mi wypisac co jest w $lol z
"{for}ami" i bez nich tak jak to robi z zmienna $lol2.

wynik powyższego kodu to:

Array
(
)

Array
(
[0] => {for}dasda das dasd sad sda dsad a{for}
[1] => dasda das dasd sad sda dsad a
)
Shili
Z tego względu, że kropka dopasowuje się w wyrażeniu regularnym do każdego znaku prócz znaku nowej linii.
kampio
jak napisać ten nawias inaczej? ([.\n]*?) tak mi coś nie działa podaj proszę odpowiedź
Shili
W nawiasie kwadratowym za to kropka jest tylko kropką, nie znakiem specjalnym. Spróbuj może:
Kod
((.|\n)*?)

Czy zadziała - nie wiem ^^
kampio
dzięki wielkie działa no ale fakt ze 2 pary nawiasów tworzą mi 2 zamiast jednej zmiennej
Shili
Kod
((?:.|\n)*?)

Nawiasu z ?: nie zapamiętuje.
kampio
super dziękuje jeszcze raz!
Kicok
Ewentualnie modyfikator s (INFO):
  1. <?php
  2.  
  3. $text = 'pierwsza linia
  4.  druga linia';
  5.  
  6.  
  7.  
  8. echo '<pre>';
  9.  
  10. preg_match( '/.+/', $text, $matches );
  11. print_r( $matches );
  12.  
  13. preg_match( '/.+/s', $text, $matches );
  14. print_r( $matches );
  15.  
  16. echo '</pre>';
  17.  
  18. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.