1

次の HTML から、データベースに保存するためだけに電子メール アドレスを抽出する必要があります。私が計画していたのは、jquery/ajaxを使用してdomを使用してすべての電子メールをプルし、ajaxを使用して別のページに保存することですが、問題は <td>他のものと一意の識別<td>がないことです。 td にはクラス名または ID 名があります

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
    </head>

    <body>
    <table width="100%" border="1">
    <tr></tr>
    <tr>
      <td>NAME</td>
      <td>ADDRESS</td>
      <td>PHONE</td>
      <td>EMAIL</td>
    </tr>
    <tr>
      <td>wwqw</td>
      <td>qww</td>
      <td>ew</td>
      <td>email@exmaple.com</td>
    </tr>
    <tr>
      <td>e</td>
      <td>wew</td>
      <td>ew</td>
      <td>emai1l@exmaple.com</td>
    </tr>
    <tr>
      <td>e</td>
      <td>ewe</td>
      <td>we</td>
      <td>email2@exmaple.com</td>
    </tr>
    <tr>
      <td>we</td>
      <td>we</td>
      <td>we</td>
      <td>emai3l@exmaple.com</td>
    </tr>
    <tr>
      <td>ww</td>
      <td>w</td>
      <td>w</td>
      <td>emai4l@exmaple.com</td>
    </tr>
    </table>
    </body>
    </html>

メールアドレスを取得して、以下のように配列に保存する必要があります

Array
(
    [0] => email@exmaple.com
    [1] => emai1l@exmaple.com
    [2] => email2@exmaple.com
    [3] => emai3l@exmaple.com
    [4] => emai4l@exmaple.com
)

<td>変数 class と id を持つことができるため、jquery などを使用してそれらをプルするのは非常に困難です。私はそれによって妨げられています。どんな助けでも大歓迎です

4

3 に答える 3

2

jQuery の使用 -->

$(document).ready(function() {
    $('tr').find('td:last').each(function(){
        var t = $(this).text();
if(typeof(t) === 'string' && t.indexOf('@') >-1) alert(t);
    })
});​
于 2012-05-22T06:29:44.483 に答える
1
<?php 
    include('simple_html_dom.php');
    $html = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
    </head>

    <body>
    <table width="100%" border="1">
    <tr></tr>
    <tr>
      <td>NAME</td>
      <td>ADDRESS</td>
      <td>PHONE</td>
      <td>EMAIL</td>
    </tr>
    <tr>
      <td>wwqw</td>
      <td>qww</td>
      <td>ew</td>
      <td>email@exmaple.com</td>
    </tr>
    <tr>
      <td>e</td>
      <td>wew</td>
      <td>ew</td>
      <td>emai1l@exmaple.com</td>
    </tr>
    <tr>
      <td>e</td>
      <td>ewe</td>
      <td>we</td>
      <td>email2@exmaple.com</td>
    </tr>
    <tr>
      <td>we</td>
      <td>we</td>
      <td>we</td>
      <td>emai3l@exmaple.com</td>
    </tr>
    <tr>
      <td>ww</td>
      <td>w</td>
      <td>w</td>
      <td>emai4l@exmaple.com</td>
    </tr>
    </table>
    </body>
    </html>';

    $dom = new simple_html_dom();
    $dom->load($html);
    $table = $dom->find('table', 0);
    if($table){
        foreach($table->find('tr') as $row) {
            $rowData = array();
            foreach($row->find('td') as $cell) {
                $rowData[] = $cell->innertext;
            }
            $theData[] = $rowData;
        }
        print_r($theData);
    }
?>

または、jqueryでそれを行うことができます

$(document).ready(function() {
    $('tr').find('td:last').each(function(){
        console.log($(this).text());
    })
});
于 2012-05-22T06:37:42.873 に答える
1

jquery を使用しないでください。正規表現を使用すると、作業が簡単になります。

$string='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<table width="100%" border="1">
<tr></tr>
<tr>
  <td>NAME</td>
  <td>ADDRESS</td>
  <td>PHONE</td>
  <td>EMAIL</td>
</tr>
<tr>
  <td>wwqw</td>
  <td>qww</td>
  <td>ew</td>
  <td>email@exmaple.com</td>
</tr>
<tr>
  <td>e</td>
  <td>wew</td>
  <td>ew</td>
  <td>emai1l@exmaple.com</td>
</tr>
<tr>
  <td>e</td>
  <td>ewe</td>
  <td>we</td>
  <td>email2@exmaple.com</td>
</tr>
<tr>
  <td>we</td>
  <td>we</td>
  <td>we</td>
  <td>emai3l@exmaple.com</td>
</tr>
<tr>
  <td>ww</td>
  <td>w</td>
  <td>w</td>
  <td>emai4l@exmaple.com</td>
</tr>
</table>
</body>
</html>';
echo "<pre>";
$pattern="/([\s]*)([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*([ ]+|)@([ ]+|)([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,}))([\s]*)/i"; 
preg_match_all($pattern, $string, $matches);
print_r($matches[0]);
于 2012-05-22T06:09:37.910 に答える