제목이 다른 질문과 유사하지만 원하는 것을 찾을 수 없습니다.PHP 문자열에서 임의의 단어를 바꾸고 변수로 바꿉니다.
$myString = 'Hello this is my string';
내가 임의의 단어 $myString
를 선택하고 $myVar
로 교체하는 일부 코드가 필요합니다 : 나는 문자열을 가지고,
$myVar = 'bottle';
을 그리고 : 나는 변수가
는 말한다. 어떻게해야합니까?
제목이 다른 질문과 유사하지만 원하는 것을 찾을 수 없습니다.PHP 문자열에서 임의의 단어를 바꾸고 변수로 바꿉니다.
$myString = 'Hello this is my string';
내가 임의의 단어 $myString
를 선택하고 $myVar
로 교체하는 일부 코드가 필요합니다 : 나는 문자열을 가지고,
$myVar = 'bottle';
을 그리고 : 나는 변수가
는 말한다. 어떻게해야합니까?
$myVar = "bottle";
$myString = 'Hello this is my string';
$words = explode(" ", $myString);
$words[rand(0, count($words)-1)] = $myVar;
echo join(" ", $words);
그냥 다음 단지 (세 번째 매개 변수) 오프셋 rand
값 strpos
하여 해당 단어의 콘텐츠를, 그들 중 무작위로 하나를 얻을 단어 분리기 (이 경우 공간) 및 사용자 rand
의 수를 계산하거나 폭발 할 수 (공백으로) 배열 한 후 문자열을 무작위로 바꾼 후 문자열에 다시 implode
(다시 공백으로) 입력합니다.
그것은 당신이 필요로하는 무엇을 :
$myVar = 'bottle';
$myString = 'Hello this is my string';
$myStringArray = explode(' ', $myString);
$rand = mt_rand(0, count($myStringArray)-1);
$myStringArray[$rand] = $myVar;
$myNewString = implode(' ', $myStringArray);
그럼 이건 어때 :
좋은 구식 PHP 경주와 같은$words = explode(' ', $myString);
$wordToChange = rand(0, count($words)-1);
$words[$wordToChange] = $myVar;
$final = implode(' ', $words)
아무것도 :
$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에서 볼 수 있습니다. 중괄호 안의 숫자를 변경하면 첫 번째 캡처 그룹이 더 많은 단어를 소비하게됩니다.
잘못된 var. $ myVar가 대체입니다 –
감사합니다. 답변이 작성되었습니다. – MSadura