首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP strpos不定位"<“

PHP strpos不定位"<“
EN

Stack Overflow用户
提问于 2015-01-05 20:18:20
回答 1查看 82关注 0票数 1

我遇到了PHP的strpos()函数的一种非常奇怪的行为。我需要循环遍历一个关键字字符串,并将URL输出到每个关键字。

让我们以下面的字符串为例:

代码语言:javascript
复制
$elementText = "Bluffs, Cliffs, Grasses, Oceans, Rocks < Materials";

以下是功能:

代码语言:javascript
复制
<?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无法检测到"<“符号,因此不能正确地分离分层关键字。即使我试图使用<作为分隔符来爆炸,它也不起作用。

奇怪的是,我可以创建一个测试文件,并从命令行手动运行它,它完全按照需要执行,但是当我试图在我的服务器上运行它时,它没有。

知道怎么解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-05 20:23:14

你确定它真的是一个<,而不是像&lt;这样的东西吗?记住,如果你的浏览器呈现的是html,它本质上会对你“撒谎”。

例如:

代码语言:javascript
复制
php > var_dump(strpos('Rocks < Materials', ' < '));
int(5)
php > var_dump(strpos('Rocks &lgt; Materials', ' < '));
bool(false)
php > var_dump(strpos('Rocks < Materials', ' &lt; '));
bool(false)
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27787223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档