PHP strpos 没有找到“<”
PHP strpos does not locate "<"
我遇到了 PHP 的 strpos()
函数的一个相当奇怪的行为。我需要遍历一串关键字并输出每个关键字的 URL..
让我们以下面的示例字符串为例:
$elementText = "Bluffs, Cliffs, Grasses, Oceans, Rocks < Materials";
函数如下:
<?php
$i = 0;
$hierarchySeparator = " < ";
$subjects = explode(", ", $elementText);
// loop through keywords
foreach ($subjects as $subject) :
// look for hierarchical keywords
$found = strpos($subject, $hierarchySeparator);
if($found !== false) :
// extract and loop through hierarchical list
$subSubjects = explode($hierarchySeparator, $subject);
$j = 1;
foreach ($subSubjects as $subSubject) : ?>
<a href="<?php echo url('/mySearch?q=' . $subSubject) ; ?>"><?php echo $subSubject; ?></a>
<?php
// Re-ouput all relevant < signs
if($j < count($subSubjects)) {
echo " < ";
}
$j++;
endforeach;
else : ?>
<a href="<?php echo url('/mySearch?q=' . $subject) ; ?>"><?php echo $subject; ?></a>
<?php endif;
// output commas to "nicefy" list output
$i++;
if($i < count($subjects)) {
echo ",";
}
endforeach; ?>
但是,在我的服务器上,PHP 无法检测到“<”符号,因此无法正确分隔层次关键字。即使当我尝试使用 <
作为分隔符进行分解时,它也不起作用。
奇怪的是,我可以创建一个测试文件并从命令行手动运行它,它完全按照需要执行,但是当我尝试在我的服务器上运行它时却没有。
知道如何解决这个问题吗?
你确定里面真的是 <
,而不是 <
之类的东西吗?请记住,如果您的浏览器正在呈现 html.
,则它基本上会 "lie" 给您
例如
php > var_dump(strpos('Rocks < Materials', ' < '));
int(5)
php > var_dump(strpos('Rocks &lgt; Materials', ' < '));
bool(false)
php > var_dump(strpos('Rocks < Materials', ' < '));
bool(false)
我遇到了 PHP 的 strpos()
函数的一个相当奇怪的行为。我需要遍历一串关键字并输出每个关键字的 URL..
让我们以下面的示例字符串为例:
$elementText = "Bluffs, Cliffs, Grasses, Oceans, Rocks < Materials";
函数如下:
<?php
$i = 0;
$hierarchySeparator = " < ";
$subjects = explode(", ", $elementText);
// loop through keywords
foreach ($subjects as $subject) :
// look for hierarchical keywords
$found = strpos($subject, $hierarchySeparator);
if($found !== false) :
// extract and loop through hierarchical list
$subSubjects = explode($hierarchySeparator, $subject);
$j = 1;
foreach ($subSubjects as $subSubject) : ?>
<a href="<?php echo url('/mySearch?q=' . $subSubject) ; ?>"><?php echo $subSubject; ?></a>
<?php
// Re-ouput all relevant < signs
if($j < count($subSubjects)) {
echo " < ";
}
$j++;
endforeach;
else : ?>
<a href="<?php echo url('/mySearch?q=' . $subject) ; ?>"><?php echo $subject; ?></a>
<?php endif;
// output commas to "nicefy" list output
$i++;
if($i < count($subjects)) {
echo ",";
}
endforeach; ?>
但是,在我的服务器上,PHP 无法检测到“<”符号,因此无法正确分隔层次关键字。即使当我尝试使用 <
作为分隔符进行分解时,它也不起作用。
奇怪的是,我可以创建一个测试文件并从命令行手动运行它,它完全按照需要执行,但是当我尝试在我的服务器上运行它时却没有。
知道如何解决这个问题吗?
你确定里面真的是 <
,而不是 <
之类的东西吗?请记住,如果您的浏览器正在呈现 html.
例如
php > var_dump(strpos('Rocks < Materials', ' < '));
int(5)
php > var_dump(strpos('Rocks &lgt; Materials', ' < '));
bool(false)
php > var_dump(strpos('Rocks < Materials', ' < '));
bool(false)