2

我有以下字符串,我试图根据特定的发生情况将其拆分为不同的变量

Brodel8DARK HORSE COMICS

我希望我的最终结果是

$user = Brodel

$index = 8

$publisher = DARK HORSE COMICS

我试过玩一些 reg 表达式,但我是新手

此条件将始终为真

用户名会改变(不同数量的字符等。)索引将始终是整数,但可以增长到 3+ 数字发布者将始终全部大写

谢谢你的帮助

4

2 回答 2

5

只要发布者不以数字开头,那么这个正则表达式就可以工作

/^([A-Za-z]+)(\d+)([A-Z\s]+)$/

它是 0+ 个字符,后跟 0+ 个数字,最后是 0+ 个大写字母。

<?php

$string = 'Brodel8DARK HORSE COMICS';

if(preg_match('/^([A-Za-z]+)(\d+)([A-Z\s]+)$/', $string, $matches) === 1){
    var_dump($matches);
}

这输出:

array(4) {
  [0]=>
  string(24) "Brodel8DARK HORSE COMICS"
  [1]=>
  string(6) "Brodel"
  [2]=>
  string(1) "8"
  [3]=>
  string(17) "DARK HORSE COMICS"
}
于 2013-09-17T16:15:47.933 回答
2

尝试这个:

<?php
$string = 'Brodel8DARK HORSE COMICS';
preg_match("/^([^\d]+)(\d+)([A-Z\s]+)$/", $string, $match);

//print_r($match);
echo $publisher = $match[3];//DARK HORSE COMICS
?>
于 2013-09-17T16:14:48.257 回答