2010-03-21 1 views
0

나는 dreamhost에서 내 서버로 이동하고 일부 스크립트를 테스트합니다. 그리고 str_split을 사용할 수 없다는 것을 알았습니다. 정의되지 않은 함수의 메시지가 주어졌습니다. 서버에서 버전을 확인했고 PHP 버전은 5.2.12입니다. 어떤 버전이 필요한지 궁금합니다. 고마워요.str_split에 필요한 PHP 버전은 무엇입니까?

Testcode :

<?php 
$arr = str_split("lsdjflsdjflsdjflsdjfl"); 
print_r($arr); 
?> 

메시지 :

Fatal error: Call to undefined function: str_split() in /test.php on line 3 

편집 @Justin 존슨 내가 서버의 시스템 디렉토리를 확인하고, 내가 Dreamhost.In에서 PHP의 두 가지 버전이 발견

사용자의 webroot 파일은 PHP5에 의해 파싱됩니다. 그래서 webroot.php에 phpinfo.php를 넣어서 php 5.2.12를 얻었습니다. php 파일이 php test.php를 사용하여 직접 명령 줄에서 실행되면 다른 PHP v 4.x가 작동하는 이유입니다. 오류가 발생한 이유입니다. 내가 사용할 때

/usr/local/php5/bin/php test.php 

모든 것이 정상입니다.

+2

http://php.net/manual/en/function.str-split.php 이 질문에 대한 답이 문서의 상단에 있습니다. –

+0

물론 나는 이것을 보았지만 PHP5.2.12를 사용하는 서버에서 오류가 발생했습니다 : ( – Young

답변

2

오히려 사용 str_split 이상, 그것은 직접 문자열의 문자를 통해 일반적으로 많이 반복하기 쉽다 :

$s="abc"; 
$i=0; 
while(isset($s[$i])) { 
    echo $s[$i++]." "; 
} 

참조?

+0

잡았어! 내 잘못이야. 내 무지를 그냥 용서해. – Young

+0

+1,하지만이 답변에 별도의 답변의 댓글 스레드에 의존하지 않도록 더 많은 설명을 추가해야합니다. –

1

필요한 버전은 PHP 5 이상입니다. 이론적으로 프로그램이 작동해야합니다.

0

코드에 아무 것이나있을 수 있습니다. 어떻게 10 라인 스크립트인지 2000 라인 스크립트인지 알 수 있습니까? 당신이 일을 str_split를 얻을 수없는 경우

1

, 그냥 배열로 문자열을 사용

$stuff = "abcdefghijkl"; 
echo $stuff[3]; 

어쨌든,이 방법은 가장 빠른

d 

생성합니다. 나는 그것이 당신의 필요에 어울리는 지 모르지만, 그렇다면 도움이되기를 바랍니다!

+0

예 ... foreach에서는 사용할 수 없습니다. – Young

+0

@SpawnCxy 그러나 문자열을 반복하기 위해 foreach가 필요하지 않습니다! –

+0

@Col. Shrapnel 문자열을 반복하지 않으므로 모든 문자를 처리해야합니다. 수동으로 하나씩 수동으로 처리 할 수는 없습니다. – Young

2

dreamhost wiki에 따르면 2008 년 이전에 도메인을 만든 경우 제어판에서 수동으로 php5로 전환해야합니다.

http://wiki.dreamhost.com/Installing_PHP5#Using_DreamHost.27s_PHP_5

PHP 5가 2008 년 9 월 2005 년 6 월 기준으로 DreamHost에 의해 모든 계획에 추가 된, PHP4에 대한 지원, 중단했다 그렇게 할 수 있습니다 더 이상 스위치를 다시 PHP 4 PHP 5부터 패널까지.

아직 PHP 5로 전환하지 않은 경우 제어판에서이를 수행 할 수 있습니다. 그러나 을 PHP 5로 전환 한 후에는 PHP 4로 다시 전환 할 수 없습니다.

  1. 로그인을 DreamHost에 제어판에 :

    다음은 PHP 4에서 PHP 5로 전환하는 방법은 다음과 같습니다.

  2. 도메인을 클릭 한 다음 도메인 관리를 클릭하십시오.
  3. PHP 5 을 활성화하려는 도메인 옆의 공구 모양 아이콘 (웹 호스팅 열 아래)을 클릭하십시오.
  4. 드롭 다운 메뉴에서 PHP 5.x.x를 선택하십시오.
  5. 지금 완전히 호스트 된 설정 변경을 클릭하십시오! 섹션의 하단에 있습니다.
  6. 을 활성화하려는 각 추가 도메인에 대해 3-5 단계를 반복하십시오.

당신은 또한 당신의 PHP 버전을 확인할 수 있습니다

<?php 
    phpinfo(); 
?> 
+0

통지 해 주셔서 감사합니다. – Young

2

첫째 : 항상 직접 함수 이름에서 그 함수의 문서 페이지에있는 모든 기능에 필요한 버전을 말할 것이다 PHP 설명서를 참조하십시오.

.htaccess 파일이 경로의 어딘가에 있으며 PHP의 이전 버전 (< 5)을 사용 중일 수 있습니다. 당신이 올바른 PHP 버전에서 실행되고 있는지 확인하십시오 (또는 트리플) 두 배, Col. Shrapnel 같이 당신이 str_split

echo "version:", phpversion(), 
    "<br/>\nstr_split exists? ", 
    function_exists("str_split") ? "true" : "false"; 

그러나 전화 선 위에이 코드를 삽입, 변환 할 필요가 없습니다 해당 문자열의 문자를 반복하기 위해 개별 문자 배열에 대한 문자열. 문자열은 이렇게에 전화를 걸기, 기존의 반복 방법을 사용하여 이상 반복 할 수 str_split 불필요하고 낭비 (당신이 세그먼트에 고정 된 길이의 덩어리로 문자열, 예를 들어 필요가없는 경우 : str_split($s, 3))

foreach (str_split($s) as $c) { 
    // do something with character $c 
} 

로 대체 될 수 있습니다
$s = "lsdjflsdjflsdjflsdjfl"; 

for ($i=0; isset($s[$i]); ++$i) { 
    // do something with character $s[$i]." "; 
} 

이는 더 이상 명확하지는 않지만 동일합니다.

0

preg_split()을 사용하여 배열을 단일 문자로 분할 할 수 있지만 처음부터 끝까지 여분의 빈 문자열이 반환됩니다.

$a = preg_split("//","abcdefg"); 
echo json_encode($a); 

인쇄 :

["","a","b","c","d","e","f","g",""]