Portál AbcLinuxu, 8. května 2025 22:52
Dobrý den.
Potřeboval bych dostat z php stránky informace obsažené mezi danými TAGy.
Mám nyní tento kód:
my $url = 'http://www.example.com/data.php'; use LWP::Simple; my $content = get $url; my @slovo = split(" ", $content); print "Celý soubor obsahuje: $content \n";
Jde však o poměrně dlouhou stránku a text který chci získat do proměnné $obsah je uzavřen uprostřed stránky,
mezi < div id="dulezity_text">...Potřebný text...< /div>.
Lze nějak získat vše mezi těmito tagy?
Moc děkuji všem :o)
Řešení dotazu:
if $content =~ /<div\s+id="dulezity_text"\s+>(.*)<\/div>/ { my $text = $1; } else { # není tam }Ale jestli v tom
div
u může být další div
, tak bude možná lepší nějaký parser pro HTML než tvořit složité výrazy.
Děkuji moc, to je přesně to co jsem hledal, avšak bohužel mi to stejně nefunguje..
Mám to ještě zabaleno a posláno na příkaz stránka.. Možná mám chybu ve formátu. V kódu mám nyní toto:
if ($arg =~ /!stranka/i) {
my $url = 'http://www.example.com/data.php';
use LWP::Simple;
my $content = get $url;
my @slovo = split(" ", $content);
if $content =~ /<div\s+id="predpoved_nej_text"\s+>(.*)<\/div>/ {
my $text = $1;
print "Soubor obsahuje: $text \n";
} else {
print "Soubor neobsahuje žádné informace \n";
}
}
Nevíte, kde je chyba? .-)
/<div\s+id="dulezity_text"\s*>(.*?)<\/div>/
Bohužel ani tak to nejede... Aplikace ihned spadne i po nahrazení regulérních výrazů dle Vás..
S poslednymi upravami je regex urcite spravny a plne funkcny... mozno by som este upravil moznost vyskytu oboch typov uvodzoviek:
$content =~ /<div\s+id=["']dulezity_text["']\s*>(.*?)<\/div>/ms
btw. ste si isty, ze div element neobsahuje ine atributy ??? Pretoze ak ano (napr. style alebo class,...) tak potom je treba pouzit regex v style:
$content =~ /<div[^>]+?id=["']dulezity_text["'][^>]*>(.*?)<\/div>/ms
Vysledok je potom ulozeny do $1 build-in premennej Perlu...
Chybi Vam zavorky kolem podminky v 'if'. Musi byt
if ( $content =~ /tady je ten regexp/ ) {
} else {
}
hehe dobry postreh.. ale ved na toto mu predsa musel priamo poukazal kompilator hlaskou v style:
syntax error at FILE line N , near "if $content"
, alebo nieco podobne
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.