2014-03-31 2 views
1

제목이 다른 질문과 유사하지만 원하는 것을 찾을 수 없습니다.PHP 문자열에서 임의의 단어를 바꾸고 변수로 바꿉니다.

$myString = 'Hello this is my string'; 

내가 임의의 단어 $myString를 선택하고 $myVar로 교체하는 일부 코드가 필요합니다 : 나는 문자열을 가지고,

$myVar = 'bottle'; 

을 그리고 : 나는 변수가

는 말한다. 어떻게해야합니까?

답변

1
$myVar = "bottle"; 
$myString = 'Hello this is my string'; 

$words = explode(" ", $myString); 
$words[rand(0, count($words)-1)] = $myVar; 
echo join(" ", $words); 
2

그냥 다음 단지 (세 번째 매개 변수) 오프셋 randstrpos하여 해당 단어의 콘텐츠를, 그들 중 무작위로 하나를 얻을 단어 분리기 (이 경우 공간) 및 사용자 rand의 수를 계산하거나 폭발 할 수 (공백으로) 배열 한 후 문자열을 무작위로 바꾼 후 문자열에 다시 implode (다시 공백으로) 입력합니다.

2

그것은 당신이 필요로하는 무엇을 :

$myVar = 'bottle'; 
$myString = 'Hello this is my string'; 
$myStringArray = explode(' ', $myString); 

$rand = mt_rand(0, count($myStringArray)-1); 
$myStringArray[$rand] = $myVar; 

$myNewString = implode(' ', $myStringArray); 
2

그럼 이건 어때 :

좋은 구식 PHP 경주와 같은
$words = explode(' ', $myString); 
$wordToChange = rand(0, count($words)-1); 
$words[$wordToChange] = $myVar; 
$final = implode(' ', $words) 
+0

잘못된 var. $ myVar가 대체입니다 –

+0

감사합니다. 답변이 작성되었습니다. – MSadura

6

아무것도 :

$myString = 'Hello this is my string'; 
$myVar = 'bottle'; 

$words = explode(' ', $myString);  // split the string into words  
$index = rand(0, count($words) - 1); // select a random index  
$words[$index] = $myVar;    // replace the word at the random position 
$myString = implode(' ', $words);  // merge the string back together from the words 

당신을 정규식을 사용하여이 작업을 수행 할 수도 있습니다.

$idx = rand(0, str_word_count($myString) - 1); 
$myString = preg_replace("/((?:\s*\w+){".$idx."})(?:\s*\w+)(.*)/", 
         "\${1} $myVar\${2}", $myString); 

이렇게하면 임의의 수의 단어를 건너 뛰고 다음 단어를 바꿉니다.

이 정규식은 here에서 볼 수 있습니다. 중괄호 안의 숫자를 변경하면 첫 번째 캡처 그룹이 더 많은 단어를 소비하게됩니다.

관련 문제