我正在编写一个解析给定URL的
PHP页面.我能做的只是找到第一次出现,但当我回应它时,我得到另一个值而不是给定的值.
这就是我到现在所做的.
<?PHP $URL = @"my URL goes here";//get from database $str = file_get_contents($URL); $toFind = "string to find"; $pos = strpos(htmlspecialchars($str),$toFind); echo substr($str,$pos,strlen($toFind)) . "<br />"; $offset = $offset + strlen($toFind); ?>
我知道可以使用循环,但我不知道循环体的条件.
这是因为你在htmlspecialchars($str)上使用了strpos,但你在$str上使用了substr.
原文链接:https://www.f2er.com/php/138615.htmlhtmlspecialchars()将特殊字符转换为HTML实体.举一个小例子:
// search 'foo' in '&foobar' $str = "&foobar"; $toFind = "foo"; // htmlspecialchars($str) gives you "&foobar" // as & is replaced by &. strpos returns 5 $pos = strpos(htmlspecialchars($str),$toFind); // now your try and extract 3 char starting at index 5!!! in the original // string even though its 'foo' starts at index 1. echo substr($str,strlen($toFind)); // prints ar
要回答你在其他问题中找到一个字符串的所有出现的其他问题,你可以使用strpos
的第三个参数offset,它指定从哪里搜索.例:
$str = "&foobar&foobaz"; $toFind = "foo"; $start = 0; while($pos = strpos(($str),$toFind,$start) !== false) { echo 'Found '.$toFind.' at position '.$pos."\n"; $start = $pos+1; // start searching from next position. }
输出:
Found foo at position 1 Found foo at position 8