输入文字
{Hey|Hi|Heyy|Hii} {thanks|thanx|thank you|thank u} {for|4} {messaging|writing} me {..|...} {whatsup|whats up|whatcha up to|whatcha doin|what r ya doin|what r u up 2|what r ya up 2} ?
并需要结果链接此
Hi thanks 4 writing me ... what r ya up 2 ?
Hey thank you for writing me ... what r ya up 2 ?
Hi thanks 4 messaging me ... whatcha up to ?
Hii thanx 4 messaging me .. what r ya doin ?
每次都从{}获取随机单词并创建一个新句子
答案 0 :(得分:0)
preg_replace_callback
$str = '{Hey|Hi|Heyy|Hii} {thanks|thanx|thank you|thank u} {for|4} {messaging|writing} me {..|...} {whatsup|whats up|whatcha up to|whatcha doin|what r ya doin|what r u up 2|what r ya up 2} ?';
$str = preg_replace_callback('/\{([^}]+)\}/', function($match){
return $a[array_rand($a = explode('|', $match[1]))];
}, $str);
echo $str;
尽管我喜欢看海报的更多工作,但这很有趣,所以我说了什么。
Preg replace回调为每个匹配运行一个用户定义的函数。正则表达式是非常困难的。
\{
从字面上匹配{
,必须将其转义([^}]+)
捕获一次或多次}
以外的任何内容,字符集不需要转义\}
从字面上匹配}
,必须将其转义然后回调将获得如下信息:
[
0 => '{Hey|Hi|Heyy|Hii}'
1 => 'Hey|Hi|Heyy|Hii'
]
因此,我们可以使用|
将其分解为一个数组(分配给$a
):
[0=>'Hey',1=>'Hi',2=>'Heyy',3=>'Hii']
然后array_rand将从上述数组中返回一个随机密钥,因此我们只需将其放在$a[$key]
部分中并返回替换项即可。
享受!