Autor Zpráva
CarlosK
Profil *
Dobrý den, učím se regulární výrazy, ale při použití skriptu:

$text = '<test ahoj><test2 dobry_den>';
preg_match_all("/<(test|test2) (.*)>/", $text, $return);
var_dump($return);

Vrací toto:


array
  0 => 
    array
      0 => string '<test ahoj><test2 dobry_den>' (length=28)
  1 => 
    array
      0 => string 'test' (length=4)
  2 => 
    array
      0 => string 'ahoj><test2 dobry_den' (length=21)

Problém je způsoben tím, že proměnná $text neobsahuje mezi tagy nový řádek:
$text = '<test ahoj>
             <test2 dobry_den>';
Takto skript funguje normálně jak má. Je možné, aby to fungovalo i pokud budou dva a více tagů na jednom řádku? Děkuji
Keeehi
Profil
preg_match_all("/<(test2|test) ?([^>]*)>/", $text, $return);
Pozor na pořadí těch řetězců v první závorce. Jelikož je test podvýrazem test2, musí být až na druhém místě. A nebo smazat ten otazník za mezerou, ale pak ta mezera bude povinná.
CarlosK
Profil *
Mockrát Vám děkuji. Funguje perfektně.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: