2013-12-16 3 views
1

문자열에서 특정 단어 다음에 두 단어를 제거하는 방법은 무엇입니까?특정 단어 다음에 두 단어 제거

$sentence = 'hello stackoverflow remove string bla bla bla.'; 
$specificword = 'stackoverflow'; 

내가 제거 '제거'하고 싶은 '문자열', 및 출력이 :

$output = 'hello stackoverflow bla bla bla.'; 

가능하다면 또 다른 더 좋은 옵션이 될 것입니다 예를 들어,이 마침표로 끝나는 문장이 : 단어 1과 단어 2의 strlen이> 5 인 경우 특정 단어 다음 두 단어를 제거하려면 단어 1> 5의 strlen과 단어 2 strlen의 단어 5를 제거하지 마십시오.

+2

안녕, 당신은 시도 당신의 시도를 포함하도록 질문을 수정 한 내용을 우리에게 보여줍니다. –

답변

1

은 단순히 당신이 str_replace()을 사용할 수 있습니다, 두 단어를 제거하려면 다음

$new_sentence = str_replace(array('remove', 'string'), '', $sentence); 

이 지정된 문자열 뒤에 두 단어의 길이를 확인하고 싶은 경우에, 당신이 먼저 말을 추출 할 수 있습니다.

$specific_word_pos = strpos($sentence, $specificword) + strlen($specificword); 
$sentence_part = substr($sentence, $specific_word_pos); 
$words = explode(' ', trim($sentence_part)); 

// check the word lengths and do the removal  
if (strlen($words[0]) > 5 && strlen($words[1]) > 5) { 
    $new_sentence = str_replace(array('remove', 'string'), '', $sentence); 
} else { 
    // some code 
} 

echo $new_sentence; // => hello stackoverflow bla bla bla. 

Demo.

+0

감사합니다. Amal, 매우 효과적입니다. 나는이 줄을 다음과 같이 대체한다 : $ new_sentence = str_replace (array ($ words [0], $ words [1]), '', $ sentence); – mwweb

+0

@mwweb : 그래, 좋은 생각이야. 도움이되어 기쁘다 :)이 답변을 ** [수락]으로 표시해주세요. (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235) * * 당신의 질문에 대답한다면 :) –

+0

Amal은 'explode'를 사용하지 않고 문자열을 분해 할 수있는 옵션입니까? 왜냐하면 큰 문자열로 느리게 수행하기 때문입니다. 덕분에 – mwweb

0

당신은 정규 표현식을 사용할 수 explode()을 사용하는 당신은 구분 기호로 공백으로 문장을 분할 한 후 지정된 단어 뒤에 문장의 일부를 얻을하고 substr()strpos()을 사용할 수 있습니다 이를 위해 긍정적 인 시각을 가지고

$s = 'hello stackoverflow remove string bla bla bla.'; 

$output = preg_replace('/(?<=stackoverflow)(\s+)\w{5,}\s+\w{5,}\s+/ui', '$1', $s); 

echo $output, PHP_EOL; // hello stackoverflow bla bla bla. 

(?<=stackoverflow)

그것은 "유래"가 선행되어야하는 패턴을 알려줍니다, 당신의 $specifiedword가 무엇 이건이 대체합니다. 단어에게 지정된와 일치하는 긍정적 인 lookbehind
  • \s+ - - 하나 또는 그 이상의 우리는

    • (?<=stackoverflow) "긴 공백으로 구분하여 최소 5 자 두 단어 다음에 유래"라고 뒤에 긍정적 인 모습을 사용 공백 문자
    • \w{5,}
    • - 최소 5 단어 문자는
  • +0

    크리스. 고맙습니다. 나는 이것이 Amal Murali 대답보다 훨씬 빨리 수행 할 것이라고 생각합니다. 맞습니까? 아마도 – mwweb

    +0

    일 것입니다. 솔직히 나는 PHP 정규식 엔진의 내부에 대해 충분히 잘 알지 못한다. – chrisguitarguy

    관련 문제