我正在尝试刮掉一些字符串(下面示例中的颜色),但只能设法刮掉第一个字符串(蓝色):
<?php
function extract_unit($string, $start, $end)
{
$pos = stripos($string, $start);
$str = substr($string, $pos);
$str_two = substr($str, strlen($start));
$second_pos = stripos($str_two, $end);
$str_three = substr($str_two, 0, $second_pos);
$unit = trim($str_three); // remove whitespaces
return $unit;
}
// example to extract the colors
$text = '<p>this is the color blue</p><p>this is the color yellow</p><p>this is the color red</p>';
$unit = extract_unit($text, 'color', '</p>');
// Outputs: blue, but I need yellow and red as well!
echo $unit;
?>
以上作品但仅输出:蓝色,但我也需要黄色和红色!
foreach( $unit as $item )
{
echo $item.'<br />';
}
这没用,有什么想法吗?谢谢!
答案 0 :(得分:1)
根据我的理解,您希望浏览一些HTML并抓取<p>
代码中的每个项目,然后在color
之后获取特定字词。
这是针对这种情况的,但很容易改变。
$text = '<p>this is the color blue</p><p>this is the color yellow</p><p>this is the color red</p>';
$unit = explode("<p>",$text); //Use PHP explode function
foreach($unit as $item){
if($item != ""){ //If it's not empty
$item = explode("color",$item); //explode() creates array
$item = end($item); //Grab last element of array
$item = trim($item); //Trim whitespace
$item = strip_tags($item); //Remove the p tags
echo $item."<br>"; //Echo out the color
}
}
有关PHP爆炸的更多信息:http://php.net/manual/en/function.explode.php
答案 1 :(得分:0)
要使用foreach
方法,您需要拥有一个数组。在php中声明数组的方法是:
$array = array("blue", "green", "yellow");
所以你的函数必须返回一个数组,而不是一个简单的变量。
提示:var_dump($array)
函数在php中有很多帮助进行调试。
答案 2 :(得分:0)
这个答案基于你的逻辑。
function extract_unit($haystack, $keyword1, $keyword2){
$return = array();
$a=0;
while($a = strpos($haystack, $keyword1, $a)){ // loop until $a is FALSE
$a+=strlen($keyword1); // set offset to after $keyword1 word
if($b = strpos($haystack, $keyword2, $a)){ // if found $keyword2 position's
$return[] = trim(substr($haystack, $a, $b-$a)); // put result to $return array
}
}
return $return;
}
$text = '<p>this is the color blue</p><p>this is the color yellow</p><p>this is the color red</p>';
$unit = extract_unit($text, 'color', '</p>');
print_r($unit);