抱歉,对php有点新鲜。尝试了所有我知道但失败并寻求专家帮助。
我有一个类似于此的字符串..
/%mydocs%/%myfolder%/%date%/%filename%.html
基本上%vars%
代表不同的字符串,并按/
分隔,就像网址一样。
我需要找到%date%(或任何给定的变量),如果它存在并且它在字符串中的位置,就像它在上面例子中的位置3那样。
我试过了,
$date = preg_match( '%date%', '/%mydocs%/%myfolder%/%date%/%filename%.html');
但它既没有返回任何东西也没有返回位置。
任何帮助,即使是一些正在玩的人,都会受到关注。
答案 0 :(得分:2)
<?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