我目前正在尝试获取针对OS商务的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匹配不太合适,或者我没有正确使用它。
感谢您的关注
亲切的问候
答案 0 :(得分: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;
我希望这会有所帮助,尽管它可能会提出尽可能多的问题,而不是试图回答。