2011-07-11 145 views
1

我想提取隨機子串形成一個字符串,我怎麼能做到這一點?如何從php中的字符串中提取隨機子串?

比方說我有這樣的文字

$text = "Some totally random text I have, and I want to work on it! But need some php skillz...";

,因此我想這樣的一個陣列,提取子

$random_string[0] = "random text I have"; 

$random_string[1] = "I have, and I want to work"; 

$random_string[2] = "need some php skillz..."; 
+0

你的意思是你沒有任何條件必須在什麼時候或如何生成子字符串? – Balanivash

+0

感謝您的評論,一個條件是切斷白色空間,所以腳本不會在他們的中間切詞。 – giorgio79

回答

3
$words = explode(' ', $string); 
$numWords = count($words); 
echo join(' ', array_slice($words, mt_rand(0, $numWords - 1), mt_rand(1, $numWords))); 
+0

謝謝你的作品也很棒 – giorgio79

2

創建兩個隨機數是小於字符串的長度

$n1=rand(1, strlen($string)); 
$n2=rand(1, strlen($string)); 

然後創建一個使用$n

$new_string = substr($string, $n1, $n2) 

望子字符串這有助於


更新時間:

你可以像這樣得到的話,

$string = "Hello Stack over Flow in here "; 

使用 explode - 返回一個字符串數組,每個都是字符串的子

$pieces = explode(" ", $string); 

$件將是您的字符串的sepearte字陣列

例子:

$pieces[0] = "Hello" 
$pieces[1] = "can" 

然後使用array_rand - 從數組中挑選一個或多個隨機條目

$rand_words = array_rand($pieces, 2); 

所以$rand_words將有兩個隨機單詞從字符串

例子:

$rand_words[0]= "Stack" 
$rand_words[1]= "Over" 
+0

讚賞Sudantha,我怎麼修改這個只在空白處切斷? – giorgio79

+0

@ giorgio79 - 你能在這裏發表一個例子嗎? – Sudantha

+0

當然,所以如果我們有這個 '$ text =「我有一些完全隨機的文本,並且我想要處理它!但是需要一些php技巧...「;'' 我認爲你的解決方案會提取這樣的sg '」ally rand「' 但是我希望cutoffs總是在空格處,所以它應該是 '」完全隨機的「' – giorgio79

0

使用substr隨機開始和長度。

$random_string = substr($text, rand(1, mb_strlen($text) - 20), rand(10, 20)); 

如果需要,調整您的值並添加更多邏輯。

+0

讚賞的布萊爾,我怎麼修改這個只能在空格處截斷? – giorgio79

+0

這不是100%正確的如果隨機數大於字符串的長度會發生什麼?它總會給出完整的字符串 – Sudantha

+0

I知道,我沒有時間寫一個完整的例子,這就是爲什麼我在那裏有最後一行的文本。無論如何,deceze有更好的方法。 –

相關問題