将用户输入url匹配到php变量

时间:2016-07-03 06:06:10

标签: javascript php jquery

有一个变量

$string = 'http://www.someurl.com/somerandom/page.php';

有一个输入

<input type="text" class="theurl" />

我需要验证用户添加到输入的数据的第一部分是否与字符串的第一部分匹配。这意味着用户数据应该以:

开头
http://www.someurl.com/

但不要验证之后发生的任何事情/,这意味着用户可以更改

somerandom/page.php
部分事情。我仍然在学习php,并且已经走了很长的路,但这是我的想法。

注意我不想为用户预填充数据,也不希望提前知道变量链接。我只是想匹配并验证。也许混合使用jquery / js和php?

我甚至不知道从哪里开始。救命?也许是我的问题特有的示例代码?

更新/最终

到目前为止,我已经想到了

$re = "/http:\\/\\/([^\\/\\r\\n]+)/"; 
$string = $baffiliate; 
$newstring = preg_match($re, $string, $matches);
foreach($matches as $key=>$value)
    {
    $value = $value;
    }
if(strpos($_POST['affiliate'], $value) === false) {
echo 'error';
}else{
...do something
}

我选择使用此解决方案,因为它在测试期间不需要额外计算变量:)

2 个答案:

答案 0 :(得分:2)

您可以使用STRPOS。     

 $string = 'http://www.someurl.com/somerandom/page.php';
 if(strpos($string, 'http://www.someurl.com/') >= 0) {
    echo 'valid';   
 } else {
    echo 'invalid'; 
 }

答案 1 :(得分:0)

如果你知道字符串第一部分的长度和确切字符,你可以简单地使用substr()。

<datasources-configuration xmlns:svns="http://org.wso2.securevault/configuration">

<providers>
    <provider>org.wso2.carbon.ndatasource.rdbms.RDBMSDataSourceReader</provider>
</providers>

<datasources>

    <datasource>
        <name>WSO2_CARBON_DB</name>
        <description>The datasource used for registry and user manager</description>
        <jndiConfig>
            <name>jdbc/WSO2CarbonDB</name>
        </jndiConfig>
        <definition type="RDBMS">
            <configuration>
                <url>jdbc:h2:repository/database/WSO2CARBON_DB;DB_CLOSE_ON_EXIT=FALSE;LOCK_TIMEOUT=60000</url>
                <username>wso2carbon</username>
                <password>wso2carbon</password>
                <driverClassName>org.h2.Driver</driverClassName>
                <maxActive>50</maxActive>
                <maxWait>60000</maxWait>
                <testOnBorrow>true</testOnBorrow>
                <validationQuery>SELECT 1</validationQuery>
                <validationInterval>30000</validationInterval>
                <defaultAutoCommit>false</defaultAutoCommit>
            </configuration>
        </definition>
    </datasource>
<datasource>
        <name>JDBC_demo_user_store</name>
        <description>The datasource used for JDBC_demo_user_store</description>
        <jndiConfig>
            <name>jdbc/JDBC_demo_user_store</name>
        </jndiConfig>
        <definition type="RDBMS">
            <configuration>
                <url>jdbc:mysql://192.168.60.60:3306/JDBC_demo_user_store</url>
                <username>root</username>
                <password>hamsa</password>
                <driverClassName>com.mysql.jdbc.Driver</driverClassName>
                <maxActive>50</maxActive>
                <maxWait>60000</maxWait>
                <testOnBorrow>true</testOnBorrow>
                <validationQuery>SELECT 1</validationQuery>
                <validationInterval>30000</validationInterval>
            </configuration>
        </definition>
</datasource>
    <!-- For an explanation of the properties, see: http://people.apache.org/~fhanik/jdbc-pool/jdbc-pool.html -->
    <!--datasource>
        <name>JDBC_demo_user_store</name>
        ...
    </datasource-->

</datasources>

substr()函数首先获取字符串($ string)。然后,如果您希望立即启动检查,则第二个参数将为“0”。接下来是您要验证的字符数。