我正在寻找一种方法,所以我的php脚本可以在它搜索的字符串包含按照确切顺序的点后面的某些字符时给出真或假。
例如:
我的字符串是:.htpassword
我的脚本只有在我的数组中找到包含点后跟一些字母字符且仅按此顺序的字符串时才能给出true。
我已经查看了strpos()函数,但这不符合我的需要,因为我有一些文件包含字符后带点的字符。
有效匹配:
无效匹配:
我的剧本到目前为止我写过:
$arr_strings = $this->list_strings();
$reg_expr_dot = '/\./';
$match = array();
foreach ($arr_strings as $string) {
if (preg_match_all($reg_expr_dot, $file, $match) !== FALSE) {
echo "all strings: </br>";
echo $match[1] . "</br></br>";
}
}
提前感谢您的帮助!
亲切的问候
答案 0 :(得分:3)
试试这个:(如果我完全理解的话)
$arr_strings = $this->list_strings();
$reg_expr_dot = '/^\.[a-z]+$/i';
$intro = 'all strings: <br/>';
foreach ($arr_strings as $string) {
if (preg_match($reg_expr_dot, $string, $match)) {
echo $intro . $match[0];
$intro = '<br/>';
}
}
为了确保整个字符串与您最疯狂的梦想完全相同,您可以使用锚点(在开头^
和最后$
),除此之外,您的模式可以匹配子字符串和返回true。 (您可以避免匹配zzzz.htaccess
和.htaccess#^..+=
)
字符类[a-z]
也包含大写字母,因为我在模式的末尾使用了i修饰符(不区分大小写)。
答案 1 :(得分:1)
试试这个/^\.[a-zA-Z]+/
- 如果还有其他标准,请与我们联系。我以为 '。'后跟任何小写/大写字符
答案 2 :(得分:1)
我不确定我是否完全理解这个问题,但/^\\.[a-zA-Z]+$/u
之类的内容应该符合您的需求。
$strings = $this->list_strings();
$matches = array();
foreach($strings as $string){
if(preg_match("/^\\.[a-zA-Z]+$/u", $string)){
$matches[] = $string;
}
}
echo "all strings: </br>";
foreach($matches as $match){
echo $match."</br>";
}
让我知道它是怎么回事。