PHP-带空格的strpos()

时间:2018-08-09 13:07:26

标签: php regex pcre strpos

imap subject = "code. 115 is your id"

我尝试使用下面的一个,但是没有用。

$headerInfo = imap_headerinfo($connection);
if (!strpos($headerInfo->subject, "code. $id")) {
    echo true 
}

$headerInfo = imap_headerinfo($connection);
if (!strpos($headerInfo->subject, "code.$id")) {
    echo true 
}

我该如何获取?

2 个答案:

答案 0 :(得分:1)

您可以使用正则表达式$id提取capture group

<?php
$id = getId('imap subject = "code. 115 is your id"'); // is 115
$id = getId('imap subject = "code.115.00 is your id"'); // is 115

function getId($subject) {
    $r = [];
    if (preg_match("/code\. ?([0-9]+)(\.00)? is your id/", $subject, $r)) {
        return $r[1];
    }
    else {
        throw new Exception("Couldn't match subject");
    }
}

现在,您只需要检查此$id是否是您的ID:)

$id = getId($headerInfo->subject);
if ($id == '119')

答案 1 :(得分:1)

strpos将返回0,因为code在字符串的开头。使用!之类的宽松比较时,0的计算结果为false。您需要做的是确保它没有对false的严格评估:

if (strpos($headerInfo->subject, "code. $id") !== FALSE) {
    echo true;
}