2013-06-18 1 views
0

예 :제거 단어를 입력

입력 = 2

텍스트 = 금주 모임의 BB CC

이 될 것이다 : 금주 모임 CC

위치의 입력은 $ _POST [입니다 '위치']

제가

$words = explode(" ", $_POST['string']); 
for ($i=0; $i<count($words); $i++){ 
    echo $words[$i] . " "; 
} 
+0

더 많은 테스트 케이스를 생각해 볼 수 있습니까? "aa bb, cc"또는 "aa bb. Cc"는 결과물의 문법에 영향을 미칠 것인가? – Cups

답변

2
$to_remove = 2; 
$text = "aa bb cc"; 

$words = explode(' ', $text); 
if(isset($words[$to_remove -1])) unset($words[$to_remove -1]); 
$text = implode(' ', $words); 
+1

'$ to_remove = $ _POST [ 'position'] - 1;을 설정할 수 있습니다. OP의 위치 값을 사용하고 설정을 해제 할 때'-1'을 두 번 사용할 필요가 없습니다. – Joe

0
$input = 2; 
$words = explode(" ", $_POST['string']); 
unset($words[$input-1]); 
$words = implode(" ", $words); 
echo $words; 
0

이것은 숙제 문제처럼 들립니다. 그래도 난 그것을 자상 할게요 :

코드 :

<?php 
    $string = trim($_POST['string']); 
    $parts = explode(" ", string); 
    $newString = ""; 
    $position = intval($_POST['position']); 
    for($a = 0; $a < count($parts); $a++) { 
     if($a != $position) { // or $a != ($position - 1) depending on if you passed in zero based position 
      $newString = $newString . $parts[$a] . " "; 
     } 
    } 
    $newString = trim($newString); 

    echo "Old String: " . $string . "<br />"; 
    echo "New String: " . $newString; 
?> 

출력 :

Old String: aa bb cc 
New String: aa cc 
0

가 큰 총을 잡아 당겨 REGEX!

$string = 'aa bb cc dd'; 
$input = 2; 

$regex = $input - 1; 
echo preg_replace('#^((?:\S+\s+){'.$regex.'})(\S+\s*)#', '$1', $string); 

출력 :aa cc dd

0

의 Foreach 루프가 조금 더 쉽게 이해하기 (IMO)을 만드는 경향이있다. 더 깨끗하게 보입니다.

$pos = 2; 
$sentence = explode(" ", $_POST['string']); 

foreach ($sentence as $index => $word) { 
    if ($index != $pos - 1) { 
     $result .= $word . ' '; 
    } 
} 

echo $result; 
+0

여러 문자열 연결을 수행하는 것이 훨씬 효율적이지 않습니다. 배열로 분해하기 쉽고 원치 않는 원소를 설정 해제 한 다음 다시 결합하십시오. –

관련 문제