English 中文(简体)
如何任意进行扼杀?
原标题:how do i randomize a string?

i 确信这是一件容易的事,但从扼杀中抽取案文的最佳方式是什么? 例如:

$content = "{hey|hi|hello there}! {i am|i m} {good|great}!";

• 如何使产出如此:

hey! i m good!
hello there! i am great!
etc..

最佳回答

或许可以尝试像:

$content = "{hey|hi|hello there}! {i am|i m} {good|great}!";

$randomOutput = preg_replace( /({.*?})/s , function($matches) {
    $possibilities = (array) explode( | , trim($matches[0],  {} ));

    return $possibilities[array_rand($possibilities)];
}, $content);

PHP <5.3

function randomOutputCallback($matches) {
    $possibilities = (array) explode( | , trim($matches[0],  {} ));

    return $possibilities[array_rand($possibilities)];
}

$content = "{hey|hi|hello there}! {i am|i m} {good|great}!";

$randomOutput = preg_replace( /({.*?})/s ,  randomOutputCallback , $content);
问题回答

如果你使用一个阵列:

$greeting = array("hey","hi","hello there");
$suffix = array("good","great");

$randGreeting = $greeting[rand(0, sizeof($greeting))];
$randSuffix   = $suffix[rand(0,(sizeof($suffix)))];

echo "$randGreeting, I m $randSuffix!";

当然,你还可以写上最后一行:

echo $randomGreeting . ", I m " . $randSuffix . "!";




相关问题
Simple JAVA: Password Verifier problem

I have a simple problem that says: A password for xyz corporation is supposed to be 6 characters long and made up of a combination of letters and digits. Write a program fragment to read in a string ...

Case insensitive comparison of strings in shell script

The == operator is used to compare two strings in shell script. However, I want to compare two strings ignoring case, how can it be done? Is there any standard command for this?

Trying to split by two delimiters and it doesn t work - C

I wrote below code to readin line by line from stdin ex. city=Boston;city=New York;city=Chicago and then split each line by ; delimiter and print each record. Then in yet another loop I try to ...

String initialization with pair of iterators

I m trying to initialize string with iterators and something like this works: ifstream fin("tmp.txt"); istream_iterator<char> in_i(fin), eos; //here eos is 1 over the end string s(in_i, ...

break a string in parts

I have a string "pc1|pc2|pc3|" I want to get each word on different line like: pc1 pc2 pc3 I need to do this in C#... any suggestions??

Quick padding of a string in Delphi

I was trying to speed up a certain routine in an application, and my profiler, AQTime, identified one method in particular as a bottleneck. The method has been with us for years, and is part of a "...

热门标签