我的MYSQL数据库中有一列headline TEXT NOT NULL
我想为每个记录浏览此列,并提取URL(如果有的话)。该URL将存储在另一列article_url VARCHAR (225) NULL
中。如果没有网址,则只需将NULL
放入列中。
最后,我希望每次将新记录插入数据库时都要更新。以下是我到目前为止的情况。
更新:这是我数据的标题列的示例
Drastic decline in Social Sciences intake *: http:// bit.ly/2vXzPhQ pic.twitter.com/PAZvG3tX17
正如您所看到的那样,数据集中有一个URL,但URL已损坏,所有网址都被http://和URL的其余部分分隔开来。所以我需要在PHP
中获取一个函数,当它获得无效的URL时,它会找到有效或无效的URL。它将修复它。
这是我迄今为止所拥有的。
$result = $conn->query($sql);
$reg_exp = "/^(http(s?): \/\/)?(www\.)+[a-zA-Z0-9\.\-\_]+(\.[a-zA-Z]{2,3})+(\/[a-zA-Z0-9\_\-\s\.\/\?\%\#\&\=]*)?$/";
if ($result->num_rows > 0)
{
// output data of each row
while($row = $result->fetch_assoc())
{
echo "id: " . $row["id"]. " headline: " . $row["headline"]. "<br>";
if(preg_match($reg_exp, $row["headline"]) == TRUE)
{
echo "URL is valid format";
}
else
{
echo "URL is invalid format";
}
}
}
else
{
echo "0 results";
}
答案 0 :(得分:0)
对于仅限MySQL的解决方案,您有四个部分可以解决:
一个作为现有数据条目的更新运行
对于1 + 2,您需要正确的REGEX-Syntax of MySQL。 php-regex可能是做SELECT headline, Headline REGEXP '(insert your regex here)' FROM table;
的一个很好的起点。如果您的正则表达式是正确的,那么您可以对数据库进行迭代检查。
在this answer中,您可以找到regexp_replace的一个版本,您可以将其添加到数据库中。这可以在UPDATE table SET artice_url = IF(...REGEXP...) regexp_replace(headline,...)
(......也需要正确填写)以及触发器中使用。