Autor Zpráva
K.
Profil *
Hezký den.
Mám menší problém s regulárním výrazem, když mám v řetězci odřádkování. Tedy něco jako např.

$str = "abcd\nefgh";
preg_match("/.*bc(.*)/",$str,$matches);
echo $matches[1];

(\n je odřádkování)
V tomto případě program vypíše pouze "d". Já bych ale potřeboval, aby vypsal "d\nefgh" (tedy s odřádkováním). Nevíte někdo, jak donutit fci preg_match, aby pracovala i s dalšími řádky?
Děkuji.
venca12
Profil
Zkus tohle:
$str = "abcd\nefgh";


$str = strtr($str, array ("\n" => "\\n"));

preg_match("/.*bc(.*)/",$str,$matches);

echo $matches[1];
gaminn
Profil *
Zpětně by to pak chtělo:

echo strtr($matches[1], array ("\\n" => "\n"));


Proč ale funkce preg_match nebere v úvahu nové řádky? Např. ereg, ereg_replace v tomto směru fungují správně (nebo spíš tak, jak bych čekal).
zdenek
Profil *
Zkus přidat modifikátor "s" na konec výrazu - výsledek je "/.*bc(.*)/s"
potom to vypíše "d efgh" , ale ty asi chceš i to "\n" ?
ah01
Profil
venca12
gaminn
To je jako drbat se levou nohou za pravým uchem ...

K.
Přepínač Single line (viz http://interval.cz/clanky/perl-com patible-regularni-vyrazy-v-php-modif ikatory-a-line-kvantifikatory/

preg_match("/.*bc(.*)/s",$str,$matches);
gaminn
Profil *
ah01
No však na to jsem se ptal;) To předchozí řešení určitě není ideální.
venca12
Profil
ah01 ::: jsem gymnasta
K.
Profil *
ah01
To je přesně to, co jsem potřeboval. Díky moc. Stejně jako za odkaz na ten článek, který mi doplnil pár chybějících znalostí o reg. výrazech.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0