检查字符串是否存在及其位置

时间:2014-02-25 11:07:06

标签: php regex preg-match

抱歉,对php有点新鲜。尝试了所有我知道但失败并寻求专家帮助。

我有一个类似于此的字符串.. /%mydocs%/%myfolder%/%date%/%filename%.html

基本上%vars%代表不同的字符串,并按/分隔,就像网址一样。

我需要找到%date%(或任何给定的变量),如果它存在并且它在字符串中的位置,就像它在上面例子中的位置3那样。

我试过了,

$date = preg_match( '%date%', '/%mydocs%/%myfolder%/%date%/%filename%.html');

但它既没有返回任何东西也没有返回位置。

任何帮助,即使是一些正在玩的人,都会受到关注。

3 个答案:

答案 0 :(得分:2)

strpos

<?php
$mystring = '/%mydocs%/%myfolder%/%date%/%filename%.html';
$findme   = '%date%';
$pos = strpos($mystring, $findme);
if ($pos === false) {
    echo "The string '$findme' was not found in the string '$mystring'";
} else {
    echo "The string '$findme' was found in the string '$mystring'";
    echo " and exists at position $pos";
}
?>

<强>结果:

The string '%date%' was found in the string '/%mydocs%/%myfolder%/%date%/%filename%.html' and exists at position 21

答案 1 :(得分:1)

如何使用preg_split

$var = '%date%';
$str = '/%mydocs%/%myfolder%/%date%/%filename%.html';
$list = preg_split('#/#', $str, -1, PREG_SPLIT_NO_EMPTY);
for($i=0; $i<count($list); $i++) {
    if ($list[$i] == $var) {
        echo "Found $var at position ",$i+1,"\n";
    }
}

<强>输出:

Found %date% at position 3

答案 2 :(得分:0)

preg_match返回一个是否匹配的布尔值,但是你可以传递第三个参数 - $ matches,它将根据提供的正则表达式包含匹配项。

你看起来并不是在使用正则表达式 - 对于你正在做的事情,你可能想要看一下strpos。 http://uk3.php.net/strpos