我的用户可以从reverbnation.com添加他的任何音频。因此,用户可以复制他的嵌入代码并将其粘贴到表单输入中。我希望我的表单只能输入两个单词。
例如: - reverbnation embad代码如:
<iframe class="widget_iframe" src="https://www.reverbnation.com/widget_code/html_widget/artist_4859830?widget_id=50&posted_by=label_265034&pwc[design]=customized&pwc[background_color]=%23d4c79f&pwc[included_songs]=0&pwc[song_ids]=23591473&pwc[photo]=0%2C1&pwc[size]=undefined" width="100%" height="100%" frameborder="0" scrolling="no"></iframe>
因此,如果我的用户粘贴上面嵌入了表单输入字段中的代码, 我想从上面的文本中收集两个单词来保存我的sql数据库。
4859830
(... artist_4859830?...)23591473
(...&amp; pwc [song_ids] = 23591473 ...)请给我一个指导;如何从输入字段中收集上述2个id。
我的sql数据库:id | userid |艺术家|歌曲
我的表单页面:
if(isset($_POST['submit'])){
$code = mysqli_real_escape_string($dbh, $_POST['code']);
$userid = mysqli_real_escape_string($dbh, $_POST['userid']);
$artist = How to get artist id (4859830) from $code
$song = How to get song id (23591473) from $code
$result = mysqli_query($dbh,"INSERT INTO user_aideo (id, userid, artist, song) values('', '$userid', '$artist', '$song')");
}
<form id="form" method="post" action="">
<input type="text" class="form-control" name="code"/>
<input type="hidden" name="userid" value="<? echo $session->userid; ?>"/>
<input type="submit" name="submit" id="submit" value=" Submit "/>
</form>
答案 0 :(得分:2)
我认为这对regular expressions来说是一个很好的用例。
对于您的特定场景,您可以在一次执行中捕获这两个数字。您只需使用WITH query AS (
SELECT t1.categoryid AS lev1, t2.categoryid as lev2, t3.categoryid as lev3, t4.categoryid as lev4
FROM category AS t1
LEFT JOIN category AS t2 ON t2.parent = t1.categoryid
LEFT JOIN category AS t3 ON t3.parent = t2.categoryid
LEFT JOIN category AS t4 ON t4.parent = t3.categoryid
WHERE t1.categoryid = 4149418031)
SELECT lev1 AS category_value FROM query
UNION
SELECT lev2 AS category_value FROM query
UNION
SELECT lev3 AS category_value FROM query
UNION
SELECT lev4 AS category_value FROM query;
函数。
preg_match
这适用于您给定的代码示例。它会将艺术家编号设为if (preg_match("/(?:.*)artist_([0-9]*)\?(?:.*)song_ids]=([0-9]*)/i", $code, $matches)) {
print 'artist: ' . $matches[1] . '<br />';
print 'song: ' . $matches[2];
}
,将歌曲编号设为$matches[1]
。
我很乐意直接在if语句中引用它们,因为正则表达式有两个捕获组,因此如果$matches[2]
返回$matches
,preg_match
数组中总会有3个索引。如果在if语句之外直接调用true
,则需要遍历preg_match
数组以避免未定义的索引错误。