Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: poprawność skryptu
Forum PHP.pl > Forum > PHP
Haczyk67
na stronie http://www.webinside.pl/php/artykuly/156 znalazłem artykuł o wyrażeniach regularnych. Jednak podane przez nich przykłady nie działają. Co jest nie tak?
  1. <?php
  2. $text = "Mój adres e-mail to: nazwa@domena.pl";
  3. preg_match("/[ ]?([a-z0-9_-]+@[a-z0-9_-]+.[a-z0-9_-.]+)+?[ ]?/i", $text, $matches);
  4. $count = count($matches);
  5. if ($count > 0) {
  6.  print "Znaleziono pasujące do wzorca dane:<br>";
  7.  $i=0;
  8.  while ($i < $count) {
  9.   print "- $matches[$i]<br>";
  10.   $i++;
  11.  }
  12. } else {
  13.  print "Nie znaleziono pasujących do wzorca danych!";
  14. }
  15. ?>




Efekt:
Warning: preg_match() [function.preg-match]: Compilation failed: range out of order in character class at offset 38 in (...) on line 3
Nie znaleziono pasujšcych do wzorca danych!
ddiceman
powinno byc
  1. <?php
  2. preg_match("/[ ]?([-_a-z0-9]+@[-_a-z0-9]+.[-_a-z0-9.]+)+?[ ]?/i", $text, $matches);
  3. ?>

Myslnik jest umiejscowiony w zlym miejscu. Wg specyfikacji PCRE musi byc pierwszym znakiem nawiasow klamrowych albo oznacza zakres (a tutaj chodzi o znak '-')
Haczyk67
ok zgadza się

ale czy mógłbyś mi jeszcze pomóc w tym:

Mam taki kod:

$wzorek='^style=\"white-space:wrap;padding-left:10px;\">[^(<//tr>)]width=\"45\"$';
preg_match_all($wzorek,
$lala,
$tabliczka); <---------linia 18

i wyskakuje error:

Warning: preg_match_all() [function.preg-match-all]: Unknown modifier '(' in (...) on line 18


Chciałbym wyciągnąć tekst spomiędzy ...style="white-space:wrap;padding-left:10px;">
i <tr width="45"...>
ddiceman
Wg PCRE wyrazenie regularne musi byc ograniczone dwoma delimiterami a co jest za nimi to flagi. Co oznacza, ze u Ciebie faktyczne wyrazenie regularne jest miedzy '^' a '^'. Sprobuj:
  1. <?php
  2. $wzorek='|style=\"white-space:wrap;padding-left:10px;\">(.*?)<tr.width=\"45\"|i';
  3. ?>

Dla kodu
Kod
style="white-space:wrap;padding-left:10px;">i <tr width="45"...>

zwraca:
Kod
Array
(
    [0] => style="white-space:wrap;padding-left:10px;">i <tr width="45"
    [1] => i
)
Haczyk67
dla innego kodu:

style="white-space:wrap;padding-left:10px;"><a href=/>dg</a><td>sdfdggg</td><td align="center" width="45"

(chcę wyciągnąć to pogrubione)

ułożyłem na podastawie Twojego:

$wzorek='|style="white-space:wrap;padding-left:10px;">(.*?)width="45"|i';

I kod nie działa: tzn. nie znajduje żadnych ciągów
Crozin
Co do maila, chyba nieco łatwiej będzie
  1. <?php
  2. if(filter_var('adres@email', FILTER_VALIDATE_EMAIL) !== false){
  3.  //popraewny
  4. }else{
  5.  //blędny
  6. }
  7. ?>
Co do drugiego:
  1. <pre><?php
  2.  
  3. $string  = 'style="white-space:wrap;padding-left:10px;"><a href=/>dg</a><td>sdfdggg</td><td align="center" width="45"';
  4. $wzorek='#style="white-space:wrap;padding-left:10px;">(.*?)width="45"#Ui';
  5.  
  6. preg_match_all($wzorek, $string, $results);
  7.  
  8. print_r($results);
  9.  
  10. #Outputs:
  11.  
  12. /*
  13.  
  14. Array
  15. (
  16.     [0] => Array
  17.         (
  18.             [0] => style="white-space:wrap;padding-left:10px;"><a href=/>dg</a><td>sdfdggg</td><td align="center" width="45"
  19.         )
  20.  
  21.     [1] => Array
  22.         (
  23.             [0] => <a href=/>dg</a><td>sdfdggg</td><td align="center"
  24.         )
  25.  
  26. )
  27.  
  28. */
  29.  
  30. ?>
Haczyk67
Twój kod nie działa. Po wpisaniu instrukcji echo $results[1][0] wyświetla:

Notice: Undefined offset: 0 in (...) on line 23

Dodam, że w ciągu znajduje się kilka takich wzorków może to dlatego?

Powiedz mi proszę co oznaczają znaki które dodajesz na końcu i na początku wzoru?
(w google nie sposób odszukać takich znaków)
Crozin
Ui - to modyfikatory: http://pl.php.net/manual/en/reference.pcre...n.modifiers.php

Pokaż cały Twój kod.
Haczyk67
$stronka = (tresc pewnej strony)...style="white-space:wrap;padding-left:10px;"><a href=/>dg</a><td>sdfdggg</td><td align="center" width="45"...

$wzorek='#style="white-space:wrap;padding-left:10px;">(.*?)width="45"#Ui';

preg_match_all($wzorek, $stronka, $results);
echo $results[1][0];



Notice: Undefined offset: 0 in (...) on line 24

Kurcze masz racje. Dopoki $stronka to tylko to co podalem na gorze jest ok, jak dam cala tresc strony zaczyna sie sypac...

Co jest nie tak?


Spróbowałem dać echo $stronka i edytor napisał że wystąpił błąd (brak definicji jakiegoś obiektu w js). A ja chcę tylko wyciągnąć coś z kodu!
Jak to zrobić? B. proszę o pomoc męczę sie z tym już tydzień...
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.