【问题标题】:Check for dot in string name检查字符串名称中的点
【发布时间】:2013-08-27 13:46:01
【问题描述】:

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

                }
            }

提前感谢您的帮助!

亲切的问候

【问题讨论】:

  • “包含一个点,后跟一些字符”。什么字符?非点?任何字符?点前面的字符呢?
  • 向我们展示一个有效匹配的示例,以及一个无效匹配的示例
  • @Dave 如果搜索结果包含 PHP 正则表达式风格的文档,您的评论可能非常有价值。这样,您建议任何正则表达式引用都可以。
  • 当然,这里有一个直接的参考:php.net/manual/en/reference.pcre.pattern.syntax.php

标签: php regex string


【解决方案1】:

试试这个:(如果我很好理解的话)

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

【讨论】:

  • @m.buettner:等一下,我不知道是什么问题。
  • 谢谢,这是我的问题的解决方案!也非常感谢您对使用的正则表达式进行更多解释。除了文档链接,我应该更好地了解正则表达式的工作原理。
【解决方案2】:

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

【讨论】:

  • @m.buettner 谢谢
【解决方案3】:

我不确定我是否完全理解这个问题,但/^\\.[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>"; 
    }

让我知道进展如何。

【讨论】:

  • 如果您使用单引号,则不需要加倍任何反斜杠。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-30
  • 1970-01-01
  • 2011-11-11
  • 1970-01-01
  • 2016-02-24
  • 2015-04-30
  • 1970-01-01
相关资源
最近更新 更多