2013-08-31 55 views
0
$str="&%*&^h-e_l_lo*&^*&"; 

如何將它分爲字符串分割到3個部分,中間開始,用字符通道結束從A到Z

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

我發現這種方式找到離開$,但我懷疑這是最好的方法:

$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]);// &%*&^ 
+0

在字符串「h-e_l_lo」中,「-'和」_「不是字母字符。你想要完全匹配什麼? – Toto

+0

//直到第一個A-ZA-Z字符 //緊接着最後一個A-ZA-Z字符 這是我的問題中的註釋。謝謝。 – Haradzieniec

回答

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: &^*&