PHP veri sed / awk / grep gibi bozma ile yardım

1 Cevap php

Tamam beyler .. Ben bir php script ayrıştırmak ve abit verileri bozmak için gereken bir HTML var. En iyi açıklama için ben awk, grep, egrep, ve boruların bir tanrı korkunç seti yoluyla sed kullanarak bir bash betiği bunu nasıl göstereceğim. Netlik için Yorum.

curl -s http://myhost.net/mysite/           | \ # retr the document 
       awk '/\/\action/,/submit/'           | \ # Extract only the form element
       egrep -v "delete|submit"             | \ # Remove the action lines 
       sed 's/^[ \t]*//;s/[ \t]*$//'        | \ # Trim extra whitespaces etc. 
       sed -n -e ":a" -e "$ s/\n//gp;N;b a" | \ # Remove every line break
       sed '{s|<br />|<br />\n|g}'          | \ # Insert new line breaks after <br />
       grep "onemyndseye@localhost"         | \ # Get lines containing my local email
       sed  '{s/\[[^|]*\]//g}'              | \ # Remove my email from the line

Bu komutlar, bu gibi görünüyor form öğesi alır:

<form action="/action" method="post">
    <input type="checkbox" id="D1" name="D1" /><a href="http://www.linux.com/rss/feeds.php">
        http://www.linux.com/rss/feeds.php
    </a> [email: 
        onemyndseye@localhost (Default)
    ]<br />         
    <input type="checkbox" id="D2" name="D2" /><a href="http://www.ubuntu.com/rss.xml">
        http://www.ubuntu.com/rss.xml
    </a> [email: 
        onemyndseye@localhost (Default)
    ]<br /> 
    <input type="submit" name="delete_submit" value="Delete Selected" />

Ve başka bir forma sokulacak Hazır .. tam tek hat giriş tabloların içine mangles:

<input type="checkbox" id="D1" name="D1" /><a href="http://www.linux.com/rss/feeds.php">http://www.linux.com/rss/feeds.php</a> <br />
<input type="checkbox" id="D2" name="D2" /><a href="http://www.ubuntu.com/rss.xml">http://www.ubuntu.com/rss.xml</a> <br />

Büyük soru PHP bunu gerçekleştirmek için nasıl? Ben bir sayfa kıvırmak için PHP kullanarak rahat değilim ... ama ben çıktı filtreleme kaybetti duyuyorum görünüyor.

Şimdiden teşekkürler. :)

1 Cevap

Sen filtre çıkış yok. Sen simple_html_dom bu şekilde ayrıştırmak ve işlemek için kullanın. Gerçekten daha sezgisel.

Gibi bir şey

// Create DOM from URL or file
$html = file_get_html('...');

// Find all a hrefs in a form tag
foreach($html->find('form a') as $element)
       echo $element->src . '<br>';