Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-带空格的strpos_Php - Fatal编程技术网

PHP-带空格的strpos

PHP-带空格的strpos,php,Php,我需要检查字符串是否包含特定的单词,但要记住,字符串之间可能有空格(任何类型的空格、制表符等) 因此,对于array1、array2和array3,所需的输出将为真。执行此操作的正确方法是什么?检查两个部分是否在一个字符串中: if (strpos($array1, 'mail') !== false && strpos($array1, '@') !== false) { echo 'true'; } 当然,对于像'aaaaaaa mail bbbb@ccc'这样的字

我需要检查字符串是否包含特定的单词,但要记住,字符串之间可能有空格(任何类型的空格、制表符等)


因此,对于array1、array2和array3,所需的输出将为真。执行此操作的正确方法是什么?

检查两个部分是否在一个字符串中:

if (strpos($array1, 'mail') !== false && strpos($array1, '@') !== false) {
    echo 'true';
}
当然,对于像
'aaaaaaa mail bbbb@ccc'
这样的字符串也是如此。 因此,您可以扩展:

$at_pos = strpos($array1, '@');
$mail_pos = strpos($array1, 'mail');
if ($at_pos !== false && $mail_pos !== false && $at_pos < $mail_pos) {
    echo 'true';
}

您可以使用这个正则表达式:
/@\s*mail/

代码:


如果我们检查字符串conatains“@”和“mail”是否有单独的连续符,这是一个问题吗?不,这不是一个问题,只要它只为@mail(带或不带空格)提供true,如果中间有单词或如果在array4的情况下根本没有at符号和mail也会提供true,则为false。另外,请使用regexp,最后一个例子,谢谢。我不能同时接受这两个答案,尤穆德是第一个,所以我把你的答案换了。
$at_pos = strpos($array1, '@');
$mail_pos = strpos($array1, 'mail');
if ($at_pos !== false && $mail_pos !== false && $at_pos < $mail_pos) {
    echo 'true';
}
if (preg_match('/@\s*mail/', $str)) {
    echo 'true';
}
<?php

$array1 = "name @mail lastname";
$array2 = "name @ mail lastname";
$array3 = "name @        mail lastname";
$array4 = "name @ word mail lastname";

$pattern = '/@\s*mail/';

echo preg_match($pattern, $array1);
echo preg_match($pattern, $array2);
echo preg_match($pattern, $array3);
echo preg_match($pattern, $array4);