$str = "234 567 some text following";
如何從字符串中的第三個字符到最後一個數字得到一個子字符串?PHP子串到字符串中的最後一個數字
編輯
我的問題似乎並不清楚從給出的答案。在上面的例子中,我希望返回子字符4 567
,而不是從第三個字符到字符串結尾。謝謝。
2nd編輯
這只是一個示例字符串...字符串可能是文本和數字的混合。我需要從已知位置到最後出現的數字的位置進行子串處理。
$str = "234 567 some text following";
如何從字符串中的第三個字符到最後一個數字得到一個子字符串?PHP子串到字符串中的最後一個數字
編輯
我的問題似乎並不清楚從給出的答案。在上面的例子中,我希望返回子字符4 567
,而不是從第三個字符到字符串結尾。謝謝。
2nd編輯
這只是一個示例字符串...字符串可能是文本和數字的混合。我需要從已知位置到最後出現的數字的位置進行子串處理。
你應該使用SUBSTR功能
substr($str, 2);
編輯:
用正則表達式
$pattern = '/^[0-9]+/';
preg_match($pattern, substr($str, 2), $matches, PREG_OFFSET_CAPTURE, 3);
print_r($matches);
EDIT2: 測試,它的工作
$pattern = '/^([0-9][ ]*)+/';
preg_match($pattern, substr($str, 2), $matches);
print_r($matches);
EDIT3: 沒看到你最後的編輯,建立一個新的^^
EDIT4:
$str = "234 567 some text 123 22 following 12 something";
$pattern = '/^([ ]*([0-9][ ]*)*([a-zA-Z][ ]*)*[0-9]*)*[0-9]/';
preg_match($pattern, substr($str, 2), $matches);
echo $matches[0];
給我4 567 some text 123 22 following 12
是什麼找你期待?
編輯5:
新再次^^
'/^([0-9 :._\-]*[a-zA-Z]*[:._\-]*)*[0-9]/'
<?php
$subStr = substr($str, 2);
?>
缺省情況下的長度(第三個參數)中,當離開了,將默認爲字符串的末尾。請注意,字符從0開始,所以第三個字符將位於位置2.
您可以在正則表達式中使用negative lookahead來完成此操作。
<?php
$lastNumber = getLastNumber("234 567 some text following");
var_dump($lastNumber);
function getLastNumber($string) {
preg_match("/[0-9](?!.*[0-9])/", $string, $match);
if (!empty($match[0])) return $match[0];
return false;
}
?>
編輯:對不起,我誤讀;以爲你想要最後一個獨立號碼。
雙編輯:這似乎是你想
<?php
$string = substr("234 567 some text 123 22 following", 2);
preg_match("/[0-9 ]+/", $string, $matches);
if (!empty($matches)) {
$number = intval(str_replace(" ", "", $matches[0]));
var_dump($number);
}
?>
什麼作爲它返回 「4567」。當然,你想留空間,只需使用$matches[0]
而不是$number
。
我只是偶然發現了這一點,並認爲我會分享我的解決方案。
<?php
$string = "234 567 some text following";
$start = 2;
if(preg_match_all('/\d+/', $string, $sub)){
$lastNumber = end($sub[0]);
$newString = substr($string,$start, strrpos($string, $lastNumber) + strlen($lastNumber) - $start);
}
echo $newString;
此行獲取所有的數字串中
if(preg_match_all('/\d+/', $string, $sub))
在這裏,我們獲取的最後一個號碼
$lastNumber = end($sub[0]);
隨後,我們發現數量最後一次出現,在使用strrpos
最後一個數字出現超過一次。然後,使用該位置的子提取從起始位置到最後一個號碼:
$newString = substr($string,$start, strrpos($string, $lastNumber)
+ strlen($lastNumber) - $start);
使用正則表達式 - http://php.net/manual/en/function.preg-match.php – ChrisW
你這是什麼期望? '4 567'? – xdazz
是的,4 567是我期望的 – Owen