Php 匹配值时出现问题

Php 匹配值时出现问题,php,regex,Php,Regex,我正在努力使strpos正常工作 如果$monthly\u cost和$phone包含在$string中,则返回true <?php $monthly_cost = 25; $phone = "iPhone"; $string = "iPhone £25 24m Upgrade"; if (strpos($string, $phone) && strpos($string, $monthly_cost)) { echo "found"; } ?> 还是使

我正在努力使
strpos
正常工作

如果
$monthly\u cost
$phone
包含在
$string
中,则返回true

<?php
$monthly_cost = 25;
$phone = "iPhone";

$string = "iPhone £25 24m Upgrade";

if (strpos($string, $phone) && strpos($string, $monthly_cost)) {
  echo "found";
}
?>

还是使用正则表达式更好

if (strpos($string, $phone) !== false && 
    strpos($string, $monthly_cost) !== false) {
  echo "found";
}
现在很好。

试试看

if (strpos($string, $phone) !== false && strpos($string, $monthly_cost) !== false) {

如果您正在搜索的字符串位于位置0,则strpos可能返回0。在这种情况下,您可以使用strpos,但请记住,您必须使用:

if (strpos($string, $phone)!==false && strpos($string, $monthly_cost)!==false) {
  echo "found";
}

因为如果它返回0,则条件失败。不管怎样,对于strpos,您只能检查这些值是否在字符串中,但无法检查例如它们是否是完整的单词,因此如果搜索“25”,并且字符串包含“256”,strpos将返回true,因此,如果需要执行这种类型的验证,则必须使用regexp。

由于某种原因,它没有返回true?strpos不返回true或false,它返回第一个字符串中第二个字符串的位置,如果不包含,则返回false。所以,如果$string以$phone开头,那么strpos返回0,如果您不将其与进行比较,则该值等于false==@用户:更改此
$monthly\u cost=25至<代码>每月成本='25'