[英]How do i get string between two string
i have one string and i need to get text between text我有一个字符串,我需要在文本之间获取文本
Scenario设想
SELECT * FROM EMP WHERE EMPID > 0
from above string i need to get从上面的字符串我需要得到
array([0]=>'*',[1]=>'EMP')
function BetweenStr($InputString, $StartStr, $EndStr=0, $StartLoc=0)
{
if (($StartLoc = strpos($InputString, $StartStr, $StartLoc)) === false) { return; }
$StartLoc += strlen($StartStr);
if (!$EndStr) { $EndStr = $StartStr; }
if (!$EndLoc = strpos($InputString, $EndStr, $StartLoc)) { return; }
return substr($InputString, $StartLoc, ($EndLoc-$StartLoc));
}
above function works if i give $InputString, $StartStr and $EndStr but if i did not pass $EndStr it's not work如果我给 $InputString, $StartStr 和 $EndStr 上面的函数有效,但如果我没有通过 $EndStr 它不起作用
$hd_qa['SELECT'] = $this->BetweenStr($myQuery,'SELECT','FROM');
**Result => *
$hd_qa['FROM'] = $this->BetweenStr($myQuery,'FROM','WHERE');
**Result => EMP
$hd_qa['WHERE'] = $this->BetweenStr($myQuery,'WHERE','');
** NOT WORKING
$matches = array();
$sql = 'SELECT blah blah blah FROM EMP WHERE EMPID > 0';
preg_match('/SELECT(.+?)FROM(.+?)WHERE(.+)/is', $sql, $matches);
print_r($matches);
echo $matches[1]; // These are what you're looking for
echo $matches[2];
If you want to do it your way, doing like that should do the trick :如果你想按照自己的方式去做,这样做应该可以解决问题:
function BetweenStr($InputString, $StartStr, $EndStr=0, $StartLoc=0)
{
if (($StartLoc = strpos($InputString, $StartStr, $StartLoc)) === false) { return; }
$StartLoc += strlen($StartStr);
if (!$EndStr) { $EndLoc = strlen($InputString); }
if (!$EndLoc = strpos($InputString, $EndStr, $StartLoc)) { return; }
return substr($InputString, $StartLoc, ($EndLoc-$StartLoc));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.