0

我目前正在尝试获取用于操作系统商务的 eBay 拍卖模块,但发现 eregi 功能已被弃用。我搜索了几篇帖子,但解决方案没有用。我真的不太了解php,但由于任务的性质,我不得不继续进行下去。

我显然遇到问题的代码是:

        $URL = 'http://cgi6.ebay.com/ws/eBayISAPI.dll?ViewListedItems&userid=' . EBAY_USERID . '&include=0&since=' . AUCTION_ENDED . '&sort=' . AUCTION_SORT . '&rows=0'; 

// Where to Start grabbing and where to End grabbing
$GrabStart = '<tr bgcolor=\"#ffffff\">';
$GrabEnd = 'About eBay';

// Open the file
$file = fopen("$URL", "r");

// Read the file

if (!function_exists('file_get_contents')) {
     $r = fread($file, 80000);
} 
else {
    $r = file_get_contents($URL);  
}


// Grab just the contents we want
$stuff = eregi("$GrabStart(.*)$GrabEnd", $r, $content);

---- 代码结束

我在拆分时遇到了类似的问题,但是将其更改为爆炸现在使用eregi解决了这个问题,它不适用于preg match,或者我没有正确使用它。

感谢您的关注

亲切的问候

胡安·费尔南多·贝尔德

4

1 回答 1

0

我不得不承认我对正则表达式没有太大的影响,所以我尝试使用 php 5.2.9 和 5.2.6 测试你现有的 eregi 以查看它返回的内容。它总是在 $stuff 中返回 FALSE 并且 $contents 没有设置为任何值。所以它只是可能这个代码实际上没有做任何事情!

所以这有点危险,因为我不能完全确定代码实际上试图返回什么,即它是否希望 $GrabStart 和或 $GrabEnd 出现在结果中。

这可能会完成这项工作。并且可能使用更少的资源,因为它不必加载正则表达式引擎来进行相当简单的文本操作。

$r = 'aaa<tr bgcolor=\"#ffffff\">xxxAbout eBaybbb';
$conent = '';

$GrabStart = '<tr bgcolor=\"#ffffff\">';
$GrabEnd = 'About eBay';

/*
 *  This will return the GrabStart and GrabEnd data in the result
    p1 3
    p2 40
    $content = <tr bgcolor=\"#ffffff\">xxxAbout eBay
*/
$p1 = strpos($r, $GrabStart);
$p2 = strpos($r, $GrabEnd) + strlen($GrabEnd);
$content = substr($r, $p1, $p2-$p1);

echo 'p1 ' . $p1 . PHP_EOL;
echo 'p2 ' . $p2 . PHP_EOL;
echo $content . PHP_EOL;

/*
*  This will just return the data between GrabStart and GrabEnd and not the start and end sentinals
    p1 27
    p2 30
    $content = xxx
*/
$p1 = strpos($r, $GrabStart) + strlen($GrabStart);
$p2 = strpos($r, $GrabEnd, $p1);
$content = substr($r, $p1, $p2-$p1);

echo 'p1 ' . $p1 . PHP_EOL;
echo 'p2 ' . $p2 . PHP_EOL;
echo $content . PHP_EOL;

我希望这会有所帮助,尽管它可能会提出与试图回答一样多的问题。

于 2013-07-02T10:39:58.137 回答