0
$str="&%*&^h-e_l_lo*&^*&";

怎么拆分成

$left="&%*&^";//until the first A-Za-z character
$right="*&^*&";//right after the last A-Za-z character
$middle = "h-e_l_lo";

我找到了这种找到 $left 的方法,但我怀疑这是最好的方法:

$curr_word = "&%*&^h-e_l_lo*&^*&";
preg_match('~[a-z]~i', $curr_word, $match, PREG_OFFSET_CAPTURE);
$left = substr($curr_word, 0,$match[0][1]);// &%*&^
4

1 回答 1

1

你可以使用:

/([^a-zA-Z]*)(.*[a-zA-Z])(.*)/

解释

[^a-zA-Z]*选择所有内容,直到到达一个字母

.*[a-zA-Z]选择所有内容,直到到达最后一个字母

.*选择字符串的其余部分

示例使用

$string = "&%*&^h-e_l_lo*&^*&";
preg_match('/([^a-zA-Z]*)(.*[a-zA-Z])(.*)/', $string, $matches);

echo $matches[1]; // Results in: &%*&^
echo $matches[2]; // Results in: h-e_l_lo
echo $matches[3]; // Results in: &^*&
于 2013-08-31T09:57:06.317 回答