如何只将部分输入值传递给变量和url?

时间:2014-06-29 11:02:48

标签: javascript php twitter-bootstrap preg-replace str-replace

所以在我正在构建的网站上我需要从输入表单字段中提取部分值并将其传递给变量,但我有点困惑如何做到这一点。

我做了一个代码

mysite.com/?getid=620

应该从具有该id的json文件返回一些数据。

这很有效。

但是!

现在问题是我需要从输入字段中发布的url地址获取该ID。

带有输入字段的表单如下所示

        <form name="appids" method="get" action="?">
            <div class="form-group">
                <label class="control-label">Insert url from Steam</label>
                <div class="input-group">
                <input class="form-control" type="text"  id="appids" name="appids" value="" placeholder="http://store.steampowered.com/app/620/" >
                <span class="input-group-btn">
                    <button class="btn btn-default" type="submit">Calculate</button>
                </span>
                </div>
            </div>
        </form>

你可以看到它的引导程序,并且已经有占位符向用户解释他需要在输入字段中发布的内容。

所以访问者只需复制并粘贴网址,我只需从中提取数字并将其传递给变量或网站网址。

用户发布此

http://store.steampowered.com/app/620/

我只需要这个

620

有什么方法可以做这样的事情? Javascript还是php代码?

编辑:

有时可以在url中的数字之后使用某种类型的代码,所以有时url看起来像这样

http://store.steampowered.com/app/241280/?snr=1_6_4__421

所以我必须去除那部分吗?snr = 1_6_4__421

我会尽量避免使用javascript,因为如果用户访问某些移动版javascript可能会中断。

5 个答案:

答案 0 :(得分:2)

在JavaScript中,您可以使用jQuery作为用户类型在字段中提取app id:

$('#appids').keyup(function(){
    var match = $.trim(this.value).match(/\/app\/(\d+)\/?$/);
    if (match) {
        console.log(match[1]);
    }
});

或者,preg_match可以帮助您使用PHP:

if (preg_match('@/app/(\d+)/?$@', $_GET['appids'], $match)) {
    echo 'App ID = '.$match[1];
}

答案 1 :(得分:1)

在Javascript中:

var num = "http://store.steampowered.com/app/620/".replace(/.+?(\d+)(\/)?$/,"$1");

在PHP中:

我不了解PHP,但您可以使用正则表达式/.+?(\d+)(\/)?$/并将其替换为$1

答案 2 :(得分:1)

  

为什么不使用会话变量来存储变量valus?   试试这个`

    <?php
session_start();
// store session data
$_SESSION['views']=1;
?>

<html>
<body>

<?php
//retrieve session data
echo "Pageviews=". $_SESSION['views'];
?>

</body>
</html>

答案 3 :(得分:1)

完全缺乏验证和尾随斜线:

Javascript变体

var url = "http://store.steampowered.com/app/620/".split("/"),
    num = url[url.length - 2];

PHP变体

$url = split("/", "http://store.steampowered.com/app/620/");
$num = $url[count($url) - 2];

答案 4 :(得分:1)

正常提交会很好:Demo

<?php
// try in your form
// http://store.steampowered.com/app/620/
// http://store.steampowered.com/app/241280/?snr=1_6_4__421

if(isset($_GET['submit'])) {
    $url = $_GET['appids'];
    $url = strtok($url, '?');
    $path = parse_url($url, PHP_URL_PATH);
    $pieces = array_filter(explode('/', $path));
    $id = end($pieces);
    echo $id;
}

?>

<form method="GET" name="appids">
    <div class="form-group">
        <label class="control-label">Insert url from Steam</label>
        <div class="input-group">
        <input class="form-control" type="text" id="appids" name="appids" value="" placeholder="http://store.steampowered.com/app/620/" >
        <span class="input-group-btn">
            <button class="btn btn-default" type="submit" name="submit">Calculate</button>
        </span>
        </div>
    </div>
</form>