0

私はここでいくつかの大きな助けを得ました、そして私はそれを味わうことができるほど私の問題を解決することに近づいています。しかし、私は立ち往生しているようです。

ローカルWebサーバーから単純なフォームを取得し、ユーザーのローカル電子メール(onemyndseye @ localhost)に一致する行のみを返す必要があります。simplehtmldomを使用すると、正しいフォーム要素を簡単に抽出できます。

foreach($html->find('form[action*="delete"]') as $form) echo $form;

戻り値:

<form action="/delete" 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" /></form>

しかし、私は次のステップを作るのに苦労しています。'onemyndseye @ localhost'を含む行を返し、それを削除して、次のものだけが返されるようにします。

<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 />

このサイトの素晴らしいユーザーのおかげで、私はこれまでに取得し、リンクだけを返すこともできますが、残りを取得するのに問題があります... <input>idとnameの値が必要になるため、完全なタグが上記のように正確に返されることが重要です後で投稿データで元のフォームに戻されます。

前もって感謝します!

***** EDIT ******

Yacobyのおかげで、問題はほぼ解決しました。最後の小さなハードルは、str_ireplaceからゴミが残っていることです。</a>おそらく、との間のすべてのテキストを削除する方が簡単でしょう<br />...?

Yacobyの追加後、出力は次のようになります。

<form action="/delete" 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: 
         (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: 
         (Default)
    ]<br />         
    <input type="checkbox" id="D3" name="D3" /><a href="http://mythbuntu.org/rss.xml">
        http://mythbuntu.org/rss.xml
    </a> [email: 

    ]<br />         
<input type="submit" name="delete_submit" value="Delete Selected" /></form>

[email :(デフォルト)]と[email:]が取り残されていることに注意してください。また、最後にフォームアクションを削除して行を送信する必要がありますが、その部分は前の提案から収集できると思います。

***** SOLVED ****

解決された問題:

$html = file_get_html('http://localhost:9000/');
foreach($html->find('form[action*="delete"]') as $form)
  if ( stripos($form->innertext, 'onemyndseye@localhost') !== false ){
      $form = preg_replace('!</a>.*?<br />!s', '</a><br />', $form);
      echo $form;
}

助けてくれてありがとう!

4

1 に答える 1

0

多分何かのような

if ( stripos($form->innertext, 'onemyndseye@localhost') !== false ){
    $form->innertext = str_ireplace('onemyndseye@localhost', '', $form->innertext);
    echo $form;
}

これは、次のようなhtmlでは機能しません

<b>onemyndseye</b>@localhost

タグが削除されたテキストがを使用している文字列と一致するかどうかを簡単に見つけることができますが、plaintext置き換えるのははるかに困難です。

于 2010-05-01T15:48:06.510 に答える