2013-06-07 4 views
0

나는이 온라인에 대한 해결책을 발견하지 않았습니다비교 문자열 (문

문제 :. 내가 날짜 형식이 : 2013-06를 -07이 편대는 다음에 의해 생성된다 :

$thedate = (string) substr($item->children('http://www.w3.org/2005/Atom')->updated,0,-15) . ' - '; - RSS 피드에서 가져온 것입니다, 만 년, 월, 일이 표시됩니다 그래서 트림

가 그때 이것을 사용

, 같은 얻을. , 각각 오늘 날짜 :

나는 IF 문을 수행 할 때이 데이터베이스에 들어가기 전에3210

그래서, 요즘은 일치해야합니다 :

if($day == $thedate) { 

echo ($day . '\n' . $thedate); 

$sql = "INSERT INTO rssFeed (date, stage, title, description, location, billtype, link) VALUES('". 
$thedate ."','". $stage . "','" . $title . "', '" . $desc ."', '" . $location ."', '" . $billtype ."', '". $linkurl ."')"; 

//print_r($sql); 

$inres = $mysqli->query($sql); 
print_r($mysqli->error); 

} else { 
echo ('They do not match'); 
}' 

그것은 IF 문없이 잘 작동, 나는 두 기간을 인쇄하고 그들이 동일 그러나 어떤 이유로 든 성명서는 동일하지 않으며 콘솔에서 '일치하지 않습니다'또는 데이터베이스에 저장됩니다. 오류 없음.

아이디어가 있으십니까?

+1

그냥 echo 대신 var_dump를 시도하십시오. substr 버전에 후행 또는 선행 공백이 없어야합니다. (10 개가 아닌 -15 개를 시도해보십시오.) 메모로 명시 적으로 문자열로 캐스팅 할 필요가 없습니다. – Jessica

+1

큰 따옴표를 사용 했으므로 변수를 연결하지 않아도됩니다. – Lenin

+0

예, 양쪽 모두에 var_dump를 수행하고 동일한 데이터 유형인지 확인하십시오. 둘 모두 문자열이어야하며 뒤 공백이 없어야합니다. – slash28cu

답변

1

이 시도 :

$day = date("Y-m-d"); //get rid of the (string) cast 
$thedate = date("Y-m-d", strtotime($thedate)); 

if($day == $thedate) { 
    ... // your stuff 
} else { 
    echo ('They do not match.'); 
} 

문자열이 저장/인코딩 방식에 약간의 분 차이가있을 수 있습니다. $ day 변수는 date() 함수로 작성 되었기 때문에 $ thedate와 동일하게 처리하면 더 정확하게 일치시킬 수 있습니다.

+0

이것은 트릭'$ thedate = date ("Ymd", strtotime (substr ($ item-> children ('http://www.w3.org/2005/Atom') -> 업데이트 됨, 10))); '도와 주셔서 감사합니다. –