代碼如下:
| 代碼如下 |
複製代碼 |
function get_between($input, $start, $end) { $substr = substr($input, strlen($start)+strpos($input, $start), (strlen($input) - strpos($input, $end))*(-1)); return $substr; } $string = "www.111cn.net"; $start = "www."; $end = ".com"; echo get_between($string, $start, $end); // output:hzhuti |
不過這個函數有個局限,就是$start子串和$end子串在整個串中只能出現一次。請看下面的例子:
| 代碼如下 |
複製代碼 |
$string = "http://www.111cn.net/"; $start = "http://"; $end = "/"; |
很明顯我想擷取這個標準URL的網域名稱部分,由於$end子串在整個串中不是唯一的,所以就會出現問題,請使用時務必注意!
例
如
NAS/NMS COMPSITE (NasdaqSC:^IXIC) Quote data by ReutersIndex Value:2,030.08Trade Time:5:16PM ETChange: 35.40 (1.71%)Prev Close:2,065.48Open:2,072.95Day 's Range:2,026.20 - 2,073.4252wk Range:1,359.32 - 2,153.831d
這樣的一個字串,我要截取Index Value:和Trade Time:之間的資料2,030.08,怎麼截取?我要通用的方法
代碼
| 代碼如下 |
複製代碼 |
<?php $str= "NAS/NMS COMPSITE (NasdaqSC:^IXIC) Quote data by ReutersIndex Value:2,030.08Trade Time:5:16PM ETChange: 35.40 (1.71%)Prev Close:2,065.48Open:2,072.95Day 's Range:2,026.20 - 2,073.4252wk Range:1,359.32 - 2,153.831d "; preg_match( " 'Index Value:(.+)Trade Time 's ",$str,$arr); if($arr){ echo $arr[ "1 "]; } ?> |