PHP:在存储到 MySQL 数据库之前剥离链接(正则表达式剥离?)[重复]
Posted
技术标签:
【中文标题】PHP:在存储到 MySQL 数据库之前剥离链接(正则表达式剥离?)[重复]【英文标题】:PHP: Strip link before storing into MySQL database (Regex stripping?) [duplicate] 【发布时间】:2013-08-29 13:16:14 【问题描述】:php 新手,所以我仍在学习如何做某些事情。 我正在尝试将 Youtube 链接存储到我的数据库中。我使用的代码是有效的,并且可以毫无问题地将我的表单存储到数据库中。
我的问题:我不想存储整个 Youtube 链接,而只是存储链接的 ID。
例如:我将这个链接输入到我的表单输入中: http://www.youtube.com/watch?v=sIkhewd69SE 我唯一想存储的是: sIkhewd69SE
这是因为我想稍后在其他页面中嵌入条目。
这是表单的 HTML:
<form action="uploadcomplete.php" method="post">
<table cellspacing="20">
<tr>
<td>Paste a Youtube link:</td>
<td><input size="50%" id="link" class="form-text" name="link"type="text"/></td>
</tr>
<tr>
<td>Enter the title:</td>
<td><input size="30%" id="title" class="form-text" name="title" type="text"/></td>
</tr>
<tr>
<td>Enter the artist:</td>
<td><input size="30%" id="artist" class="form-text" name="artist" type="text"/></td>
</tr>
<tr>
<td></td>
<td><input id="submit" class="submit" type="submit" name="submit" value="Upload!" /></td>
</tr></table>
</form>
这是 表单调用的 PHP 函数(上传 COMPLETE.PHP):
$errors = array()
if (isset($_POST['link']) && isset($_POST['title']) && isset($_POST['artist']))
if (strlen($_POST['link'])<3) $errors[] = 'Uw naam moet minstens 3 letters bevatten';
if (strlen($_POST['title'])<6) $errors[] = 'De naam van uw bedrijf moet minstens 3 letters bevatten';
if (strlen($_POST['artist'])<6) $errors[] = 'Uw nummer moet minstens 9 nummers bevatten';
if(count($errors)<1)
$conn = new mysqli('localhost', 'root', '', 'silentbeats');
if (mysqli_connect_errno())
exit('Connectie gefaald: '. mysqli_connect_error());
$adds['link'] = $conn->real_escape_string($_POST['link']);
$adds['title'] = $conn->real_escape_string($_POST['title']);
$adds['artist'] = $conn->real_escape_string($_POST['artist']);
$sql = "INSERT INTO `tbltracks` (`link`, `title`, `artist`)
VALUES ('". $adds['link']. "', '". $adds['title']. "', '". $adds['artist']. "')";
if ($conn->query($sql) === TRUE)
echo 'Uw gegevens werden opgeslagen, bedankt!';
echo "<br /><a href='LP_general.php'>Terug naar de hoofdpagina</a>";
else
echo 'Error: '. $conn->error;
$conn->close();
else
echo "<script>alert('".implode("\\n", $errors)."');</script>";
echo "<script>window.location='upload.php'</script>";
else
echo 'Geen data ontvangen van formulier';
?>
如何只存储这个的 ID 标签? 任何帮助将不胜感激,我真的坚持这个。
【问题讨论】:
如果链接始终采用这种格式,您可以在“watch?v=". 上使用 explode() 我也看到了这个话题,劳伦斯,我只是想知道如何在我的代码中实现它。我还是 PHP 新手 【参考方案1】:这应该做你想做的事,即使你的 url 中有更多参数:
$ytLink = 'http://www.youtube.com/watch?v=sIkhewd69SE';
$ytId = preg_replace('/^.+v=(\w+)&*.*$/', '$1', $ytLink);
echo $ytId;
【讨论】:
感谢您的回复,我已将您的答案选为正确答案,效果很好!【参考方案2】:list($query, $arg) = (explode('=', parse_url($_POST['link']))['query']));
您要查找的值将在 $arg 中
【讨论】:
以上是关于PHP:在存储到 MySQL 数据库之前剥离链接(正则表达式剥离?)[重复]的主要内容,如果未能解决你的问题,请参考以下文章
PHP全栈开发:PHP与MySQL存储交互(1.连接创建数据库;创建数据表)
如何在提交到 PHP 之前使用 AJAX 从选择标签中获取数据?