Vinnaren i pepparkakshustävlingen!
  • 1
  • 2
2020-12-05, 15:48
  #1
Medlem
Hej!
$result innehåller massa HTML exempel nedan vad den kan innehålla, men i verkligheten är det mycket längre. Nu vill jag ha en funktion som letar upp en specifik span, och plocka ut siffran som finns i den åt mig. <span class="hittamig">5 Bilar</span>.
I detta fall vill jag få ut "5", men den siffran kan vara vilken som helst. Hur kan jag plocka ut den på ett smidigt sätt? Classen är unik för detta iallafall, så "hittamig" finns det bara en av.

$result;
Kod:
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
<link rel="stylesheet" href="style.css">
<title>Online</title>
<!-- jQuery + Bootstrap JS -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"></script>
</head>
<body>
<div class="App">
<div class="vertical-center">
<div class="inner-block">
<h3><img src="logga.png"><br>Välkommen Olle!</h3>
<ul>
<li><a href="ut.php">Logga Ut</a></li>
</ul>

<span class="hittamig">5 Bilar</span>
            </div>
        </div>
    </div>
</body>
</html>
Citera
2020-12-05, 15:55
  #2
Medlem
Trollfeeders avatar
Pipe till grep borde väl funka smidigt?
Citera
2020-12-05, 16:08
  #3
Medlem
Citat:
Ursprungligen postat av Trollfeeder
Pipe till grep borde väl funka smidigt?

Googlade, fattade noll
Citera
2020-12-05, 16:09
  #4
Medlem
Trollfeeders avatar
Citat:
Ursprungligen postat av matematikern88
Googlade, fattade noll

curl <ditt kommando> | grep <det du letar efter>
Citera
2020-12-05, 16:21
  #5
Medlem
distanss avatar
Citat:
Ursprungligen postat av Trollfeeder
Pipe till grep borde väl funka smidigt?

Ja, om man pratar regexp flytande

Denna kanske kan vara till hjälp?!

https://stackoverflow.com/questions/...data-from-html
Citera
2020-12-05, 16:46
  #6
Medlem
Citat:
Ursprungligen postat av distans
Ja, om man pratar regexp flytande

Denna kanske kan vara till hjälp?!

https://stackoverflow.com/questions/...data-from-html

Hittade denna, men den tar den första <span> den hittar, hur får jag in class="hittamig"?

Kod:
$dom = new DOMDocument;
$dom->loadHTML($result);
$result2 $dom->getElementsByTagName('span')->item(0)->nodeValue;
$dom->loadHTML($html);
foreach (
$dom->getElementsByTagName('span') as $tag) {
    echo 
$tag->nodeValue '<br/>';
}

echo 
strtok($result2' ');
if (
preg_match('#<span[^<>]*>([\d,]+).*?</span>#'$result2$matches)) {
    echo 
$matches[1];

Citera
2020-12-05, 17:09
  #7
Medlem
distanss avatar
Citat:
Ursprungligen postat av matematikern88
Hittade denna, men den tar den första <span> den hittar, hur får jag in class="hittamig"?

Regexp och web scraping ger mig bara huvudvärk!

Tror du behöver ändra
Kod:
preg_match
att ta hela taggen
Kod:
<span class="hittamig">
.

Men är väldigt osäker

https://automatedcode.wordpress.com/...with-php-curl/
Citera
2020-12-05, 17:39
  #8
Medlem
Citat:
Ursprungligen postat av distans
Regexp och web scraping ger mig bara huvudvärk!

Tror du behöver ändra
Kod:
preg_match
att ta hela taggen
Kod:
<span class="hittamig">
.

Men är väldigt osäker

https://automatedcode.wordpress.com/...with-php-curl/

Gav ingen skillnad, eller hur tänker du? Detta är sista grejen på mitt projekt, så vill bara att den ska ge mig rätt siffra nu.
Kod:
if (preg_match('#<span class="hittamig"[^<>]*>([\d,]+).*?</span>#'$result2$matches)) { 
Citera
2020-12-05, 17:56
  #9
Medlem
distanss avatar
Citat:
Ursprungligen postat av matematikern88
Gav ingen skillnad, eller hur tänker du? Detta är sista grejen på mitt projekt, så vill bara att den ska ge mig rätt siffra nu.
Kod:
if (preg_match('#<span class="hittamig"[^<>]*>([\d,]+).*?</span>#'$result2$matches)) { 

Du måste "escapea" citattecknena runt hittamig skulle jag tro.. Typ
Kod:
\"hittamig\"
Citera
2020-12-05, 18:01
  #10
Medlem
Citat:
Ursprungligen postat av distans
Du måste "escapea" citattecknena runt hittamig skulle jag tro.. Typ
Kod:
\"hittamig\"

Tyvärr, det är raden över som gör utskriften.
echo strtok($result2, ' ');

hela if-koden går att ta bort, den verkar inte göra något. Detta är överkurs för mig egentligen.
Citera
2020-12-05, 18:10
  #11
Medlem
distanss avatar
Citat:
Ursprungligen postat av matematikern88
Detta är överkurs för mig egentligen.

Som sagt, huvudvärk! Någon på Stackexchange eller annat internationellt forum kanske kan bidra med bättre svar!?
Citera
2020-12-05, 20:27
  #12
Medlem
Kod:
preg_match('/<span class="hittamig">(.*?)<\/span>/s'$results$matches);
if(
count($matches) >= 2) {
    
$result $matches[1];
    
$numeric preg_replace("/[^0-9]/"""$result);
    echo 
"Original match: " $result."\r\n";
    echo 
"Numerically parsed match: " $numeric."\r\n";


Ovanstående producerar följande resultat.

Citat:
Original match: 5 Bilar
Numerically parsed match: 5
Citera
  • 1
  • 2

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback