0

我将网站链接存储在 MYSQL 数据库中,我可以在其中以 PHP 输出数据,并且我正在使用 PHP DOM 来提取数据。我使用以下代码输出了“CBS今早:周六新”的文本:

<?php
  define('DB_HOST', 'localhost');
  define('DB_USER', 'myusername');
  define('DB_PASSWORD', 'mypassword');
  define('DB_DATABASE', 'mydbname');

  $errmsg_arr = array();
  $errflag = false;
  $link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);

  if(!$link) 
  {
    die('Failed to connect to server: ' . mysql_error());
  }

  $db = mysql_select_db(DB_DATABASE);
  if(!$db) 
  {
    die("Unable to select database");
  }

  function clean($var)
  {
    return mysql_real_escape_string(strip_tags($var));
  }
  $channels = clean($_GET['channels']);
  $id = clean($_GET['id']);

  if($errflag) 
  {
    $_SESSION['ERRMSG_ARR'] = $errmsg_arr;
    echo implode('<br />',$errmsg_arr);
  }
  else 
  {
    $insert = array();

    if(isset($_GET['channels'])) 
    {
      $insert[] = 'channels = \'' . clean($_GET['channels']) .'\'';
    }
    if(isset($_GET['id'])) 
    {
      $insert[] = 'id = \'' . clean($_GET['id']) . '\'';
    }


    if($channels && $id) 
    {
      $qrytable1="SELECT id, channels, links FROM tvguide WHERE channels='$channels' && id='$id'";
      $result1=mysql_query($qrytable1) or die('Error:<br />' . $qry . '<br />' . mysql_error());

      while ($row = mysql_fetch_array($result1))
      {
        $links = $row['links'];
        include ('simple_html_dom.php');
        $html = file_get_html($links);
        $title1 = $html->find('li[id=row1-1]', 0)->plaintext; // with this

        if ($html->find('li[id=row1-1]', 0)->plaintext == ('NEW'))
        {
          $output = preg_replace('/\d:\d+/', '', $title1);
          $output = '<span id="title1">'.str_replace(array("\t", '   ', '<BR>','</BR>', 'AM','PM'), '', $output).'</span><br><br>';
          $output = str_replace('<span id="title1"> ', '<span id="title1">', $output);
          $output = str_replace(' "', ': ', $output);
          $output = str_replace(' NEW', '', $output);
          echo $output;
      }
    }
  }
?>

这是 HTML 源代码:

<span id="title1">CBS This Morning: Saturday  NEW</span><br><br>

在这种情况下,我试图在最后寻找一个包含文本,如果包含文本有一个名为“NEW”的文本,那么它将被替换为一个空文本。if ($html->find('li[id=row1-1]', 0)->plaintext == ('NEW'))在做某事之前,我尝试使用它来查找包含文本,但它没有检查出来。我想我可能做错了,但我不确定。有谁知道如何使用 if 语句检查文本末尾的包含文本,以便将包含文本替换为空文本?

4

1 回答 1

1

==对整个字符串进行完全匹配。您需要使用搜索子字符串的函数:

if (strpos($title1, 'NEW') !== false) {
    ...
}

如果只想在标题末尾识别,可以使用正则表达式:

if (preg_match('/NEW$/', $title1) {
    ...
}

或者你可以使用substr()

if (substr($title1, -3) == 'NEW') {
    ...
}
于 2013-09-14T16:20:27.147 回答