2

我正在寻找一种方法,以便我的 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>";

                }
            }

提前感谢您的帮助!

亲切的问候

4

3 回答 3

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 修饰符(不区分大小写)。

于 2013-08-24T17:04:08.117 回答
1

试试这个/^\.[a-zA-Z]+/- 如果有其他标准,请告诉我。我以为 '。' 后跟任何小写/大写字符

于 2013-08-24T17:04:32.797 回答
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>"; 
    }

让我知道事情的后续。

于 2013-08-24T17:15:48.083 回答