이 코드에 문제가있어서 PHP 메소드 'substr'이 재생되고 있습니다. 나는 단지 그것을 얻지 않는다. 여기 내가 달성하려고하는 것을 간략하게 소개합니다. 나는 Joomla의 이메일 구독자들과 함께이 거대한 XML 문서를 가지고있다. Mailchimp에 가져 오기를 시도하고 있지만 Mailchimp는 전자 메일을 목록으로 가져 오는 구문 구문에 대한 몇 가지 규칙을 가지고 있습니다. 그래서 순간에 구문은 다음과 같다 :PHP substr이 아무것도 표시하지 않습니다
<subscriber>
<subscriber_id>615</subscriber_id>
<name><![CDATA[NAME OF SUBSCRIBER]]></name>
<email>[email protected]</email>
<confirmed>1</confirmed>
<subscribe_date>THE DATE</subscribe_date>
</subscriber>
내가 모든 이메일을 받아이 같은를 출력하는 간단한 PHP 스크립트 만들고 싶어 :
[[email protected]] [NAME OF SUBSCRIBER]
[[email protected]] [NAME OF SUBSCRIBER]
[[email protected]] [NAME OF SUBSCRIBER]
[[email protected]] [NAME OF SUBSCRIBER]
을 내가 그렇게 할 수있는 경우를, 그런 다음 Mailchimp에 붙여 넣기 만하면됩니다.
지금 여기에 지금까지 내 PHP 스크립트입니다 :
$fileName = file_get_contents('emails.txt');
foreach(preg_split("/((\r?\n)|(\r\n?))/", $fileName) as $line){
if(strpos($line, '<name><![CDATA[')){
$name = strpos($line, '<name><![CDATA[');
$nameEnd = strpos($line, ']]></name>', $name);
$nameLength = $nameEnd-$name;
echo "<br />";
echo " " . strlen(substr($line, $name, $nameLength));
echo " " . gettype(substr($line, $name, $nameLength));
echo " " . substr($line, $name, $nameLength);
}
if(strpos($line, '<email>')){
$var1 = strpos($line, '<email>');
$var2 = strpos($line, '</email>', $var1);
$length = $var2-$var1;
echo substr($line, $var1, $length);
}
}
첫 번째 경우 문이 정상적으로 작동합니다. 그것은 줄에 ''태그가 있는지 식별하고,있는 경우 태그를 찾아서 substr-method를 사용하여 전자 메일을 출력합니다.
두 번째 if 문은 나를 귀찮게합니다. If는 첫 번째 if 문과 동일한 작업을 수행해야하지만 그렇지 않습니다. 길이가 정확한 길이입니다 (제가 확인했습니다). 유형이 올바른 유형입니다 (확인했습니다). 그러나 내가 그것을 되풀이하려고 할 때 아무 일도 일어나지 않습니다. 스크립트는 계속 실행되지만 아무 것도 쓰지 않습니다.
나는 꽤 많은 것을 가지고 놀았으며 모든 것을 시도한 것처럼 보입니다. 그러나 나는 그것을 알 수 없습니다.
http://php.net/simplexml 대신이 귀찮은 문자열 피딩 방식을 사용하는 특별한 이유가 있습니까? – mario
스택 오버플로에 오신 것을 환영합니다! RegEx를 사용하여 HTML을 구문 분석하지 마십시오 ([http : //stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454]) . 대신 [HTML 구문 분석기] (http://stackoverflow.com/questions/292926/robust-mature-html-parser-for-php)를 사용하십시오. –