【发布时间】:2012-09-26 16:00:25
【问题描述】:
我正在尝试创建一个 php 函数,该函数将返回两个子字符串之间所有出现的文本的数组。我对正则表达式毫无用处,会觉得这很方便,我敢肯定那里已经有一个非常好的但我找不到它。
function getAllBetweenStr($input, $start, $end)
{
//DO STUFF
//RETURN ARRAY
}
$inputStr ="<a href='http://formaco4/en/abc' class='currentLink' hreflang='en'>abc1/a>
<a href='http://formaco4/en/abc/b1' hreflang='en'>abc2</a>
<a href='http://formaco4/en/abc/b2' hreflang='en'>abc3</a>
<a href='http://formaco4/en/abc/b3' hreflang='en'>abc4</a>";
$linkStr = array();
$linkStr = getAllBetweenStr($inputStr, "http://formaco4/en/'", "' hreflang")
返回数组是这样的 Array([0] => "abc/b1", [1] => "abc/b2", ... , [n] => "gingers/rule")
如果有帮助,我已经有了这个功能:
function getBetweenStr($string, $start, $end)
{
$string = " ".$string;
$ini = strpos($string,$start);
if ($ini == 0) return "";
$ini += strlen($start);
$len = strpos($string,$end,$ini) - $ini;
return substr($string,$ini,$len);
}
【问题讨论】:
-
这实际上是 preg_match / preg_match_all (在你的情况下)是为......
-
您将 $linkstr 定义为一个数组。然后,您将 $linkstr 定义为字符串(返回 substr),当您想将其作为数组时,您必须将其定义为 $link[]。
标签: php arrays regex string substring