![](/img/trans.png)
[英]How to extract a substring from a string in PHP until it reaches a certain character?
[英]Extract substring from a certain indexposition of (huge) string
假设我有一个很大的字符串,我想在其中提取某个名称的某些值,例如Apple的股价。
可以说字符串看起来像这样(实际上是html,但这在这里无关紧要)
$ output =“ nsdfsdnfsnfdnsdfnueruherdfndsdndnjsdnasdnn 苹果 dndfjnfjdf647tgtgtgegeq”;
我想提取值647。
真正的字符串可能是数十万个字符。
我可以通过以下方式揭示苹果的立场:
$str = "Apple";
$pos = strpos($output, $str);
假设函数返回87310,这是Apple中第一个字母的索引位置。
我的问题来了吗? 当我知道Apple的起点时,是否有一种简单的方法来提取价值? 我一直在寻找这样的功能,但现在找不到。 我可以通过在Apple的名字前面循环然后提取相关字符来轻松解决此问题? 但这至少可以节省击键,而只需使用一个函数即可。
谢谢!!!
要仅提取股票价格,您需要执行以下操作:
在字符串中搜索“ Apple”,然后保存$ position + 5(Apple的长度)。 直接在$ position之后(一次一个字符)搜索is_numeric的第一个字符,并将其添加到字符串$ stock_val中。 继续添加所有后续字符,直到找到一个!is_numeric。 这是我的笨拙代码:
$position = strpos(strtolower($str), "apple") + strlen("apple");
$temp_str = substr($str, $position);
$stock_val = "";
do {
$char = substr($temp_str, 0, 1); //Take first char of $temp_str
$temp_str = substr($temp_str, 1); //Remove that char from $temp_str
$is_acceptable = (is_numeric($char) || $char == "." || $char == ",");
if($is_acceptable) { //If the char is_numeric, add it to $stock_val
$stock_val .= $char;
}
if(!$is_acceptable && $stock_val != "") {
break; //If the char is NOT numeric AND $stock_val
} //already has characters, break.
} while(strlen($temp_str) > 0); //Repeat while there are still characters
您知道起始位置,因此可以通过执行strlen($ str)计算结束位置,然后使用substr使用substr切掉不需要的字符串
$portion = substr(substr($string, 0, -(strlen($string) - $end)), $start);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.