【发布时间】:2016-01-09 21:20:40
【问题描述】:
我目前正在为 preg_match_all 苦苦挣扎
我正在尝试编写一个程序来获取强力球号码并将它们插入 mysql 数据库以进行进一步操作。虽然我希望将它们作为日期、白色数字、强力球插入一行,但在修复标签问题后,我将专注于这一点。我正在使用来自实际强力球网站的一些源代码作为 $url 变量。
这是我的代码:
$url='localhost/lotto/test.html';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
$resultDate = curl_exec($ch);
$resultNum = curl_exec($ch);
$resultPb = curl_exec($ch);
curl_exec($ch);
$link1 = new mysqli("localhost", "root", "", "lotto");
if($link1 === false){
die("ERROR: could not connect. " . mysqli_connect_error());
}
else {
echo "Connection Established </br>";
}
preg_match_all("/<b>(.+?)<\/font>/", $resultDate, $dates);
for ($d=0; $d<count($resultDate); $d++) {
preg_match_all("/white_40.gif\" class=\"cssNumber-24\">(.+?)<\/td>/", $resultNum, $numbers);
for($n=0; $n<count($resultNum); $n++) {
preg_match_all("/red_40\.gif\" class=\"cssNumber-24\">(.+?)<\/td>/", $resultPb, $pb);
for($p=0; $p<count($resultPb); $p++) {
foreach(array($dates[$d]) as $date) {
for ($q=0;$q<count($date);$q++){
foreach(array($numbers[$n]) as $number) {
for ($i=0; $i<count($number); $i++) {
foreach (array($pb[$p]) as $power) {
for ($w=0;$w<count($power);$w++){
$sql = "INSERT INTO Winners (dates,white,power) VALUES ('$date[$q]','$number[$i]','$power[$w]')";
if(mysqli_query($link1, $sql)){
echo "Data added successfully. </br>";
}
else {
echo "ERROR: Could not execute $sql. " . mysqli_error($link1);
}
}
}
}
}
}
}
mysqli_close($link1);
}
}
}
curl_close($ch);
期望的结果:
11/12/2013插入mysql
不良结果:
<b>11/12/2013</font> 改为插入 mysql
注意:有数千个日期。 另请注意:我对 php 很陌生,所以请不要批评,哈哈。
【问题讨论】:
-
与 HTML 不同,正则表达式适用于正则语言。
-
通过 regex101.com 运行
preg_match_all会返回正确的结果。怎么了?你的源数据块是什么? -
好吧,我正在使用 curl 获取一个 url,找到我正在寻找的数据,将该数据插入 mysql 数据库。我可以回显结果,它会显示所需的结果,但是将其插入 mysql 会显示在数据库中,并带有
<b>和 `。有什么我想念的吗? -
@ovranon 这个问题似乎已经停滞/被放弃了。你还在为这个问题寻求解决方案吗?我愿意帮助你,如果你能提供一个很小但相关的样本来说明
$resultDate可能持有的东西。我相信我也可以改进您的流程。现在由您决定是否删除这个旧问题或提供一些附加信息。让我们以一种或另一种方式解决此页面。
标签: php preg-match-all