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

Sorry, a bit new to php. Have tried all I know, but failed and seeking expert help.

I have a string similar to this.. /%mydocs%/%myfolder%/%date%/%filename%.html

Basically the %vars% represents different strings and seperated by /, like a URL.

I need to find %date% (or any given variable) if it's present and it's position in the string, like it's at position 3 in the example above.

I tried this,

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

But it's neither returning anything nor the position.

Any help, even some heads up to play with, will be appriciated.

How about using 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,"
";
    }
}

output:

Found %date% at position 3

preg_match returns a boolean for whether there was a match or not, but you can pass a third parameter - $matches, which will contain the matches according to the regular expression provided.

You don't look to be using a regular expressions - for what you are doing you probably want to look at strpos instead. http://uk3.php.net/strpos

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";
}
?>

Result:

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