2013-11-27 3 views
-3

나는 누군가가 나를 도울 수 있기를 바랍니다. 나는 코딩을 조금하고 나 막혔다. 팁은 좋을 것이고, 나에게 설명한다, 내가 틀린 곳이다.PHP 스크립트가 작동하지 않습니다. while 루프 내의 조건

작업은 내가 지금하고있는 것보다 좀 더 복잡합니다. 지금은 for 루프가 문자열의 모든 하위 문자열을 검사하도록하고 싶습니다. 루프 내부에는 while 조건이 있는데, 부분 문자열이 공백이 될 때까지 부분 문자열을 반복해서 출력해야합니다. 그런 다음 에코가 중단됩니다.

왜 작동하지 않는지 나는 이해할 수 없다. 나는 내 서버에서 TimeOut을 얻는다.

<?php 
// Task 
// Find-and-Replace 
// "whole word" match 
// Text is sorted as array of character 

$text = "This film is the best film of the year."; // Find: film, replace: movie 
$word = "film"; 
$replace = "movie"; 
echo strlen($text) . "<br>"; 

for($i = 0; $i <= strlen($text); $i++){ 
    while(substr($text,$i,1) != " ") { 
     echo substr($text,0,1); 
    } 
} 



?> 

편집 : 그것은 여전히 ​​작동하지 않습니다

for($i = 0; $i <= strlen($text); $i++){ 
    while(substr($text,$i,1) != " ") { 
     echo substr($text,$i,1); 
    } 
} 

을 그 모든 편지를 반복 while 루프없이. 그러나 whileloop에서는 작동하지 않습니다.

+1

그것은 while 루프가 시작 종료하지 않습니다. 첫 번째 반복에서 * 동일한 * 하위 문자열을 반복해서 확인합니다. for 루프로 시도해야합니다 ... – immulatin

+1

while 루프에서 $ i를 증가시키지 않으므로 항상 첫 문자를 공백과 비교합니다 ... 아마도 'while'을 'if ', 당신이 성취하고자하는 것을 완전히 명확하게 밝히지는 않았지만 –

+0

"영화"라는 단어의 모든 인스턴스를 세계의 "영화"로 대체하려고하십니까? –

답변

0

이 정규 표현식에 훨씬 더 쉽게 :

$text = "This film is the best film of the year."; // Find: film, replace: movie 
$word = "/film/i"; 
$replace = "movie"; 

echo preg_replace($word, $replace , $text); 
+0

감사합니다. str_replace를 사용하여이 작업을 수행 할 수도 있었지만 문자열 조작 함수 없이는 완전히 처리하려고합니다. 내 코드를 업데이트 ... 여전히 작동하지 않습니다. (어쨌든 고마워요. –

+0

이것은 나를 위해 잘 작동합니다, 나는 그것을 테스트했습니다. 왜 문자열 조작을 피하려고합니까? – portforwardpodcast

+0

"생각처럼 프로그래머 "교육 과정입니다. 그래서 당신은 내 업데이트 된 코드가 잘 작동한다고 말하는가? 이상하고 이상한 것. –