如何使用strpos()来检查变量的路径?

时间:2017-05-30 15:09:21

标签: php strpos

我有一个显示一些上传图片的主页。

我从数据库中获取它并使用strpos()来检查由于目录问题导致的URL,并且它运行良好:

if(strpos($row['cImage'],"http://") === FALSE){
    echo "<img src='serintercement/".$row['cImage']."' style='width: 107px; height:102px;' />";    
}else{
    echo "<img src='".$row['cImage']."' style='width: 107px; height:102px;' />";    
}

我需要在显示点击图像的页面中使用相同的逻辑,但它有一个变量,我正在努力解决这个问题,因为它是一种不同的写法:

<img src='<?php echo $resultData->cImage; ?>'/>

我无法修复目录问题。如何对第二个代码使用strpos()

3 个答案:

答案 0 :(得分:1)

您应该能够类似地检查路径 - 只要设置了对象的属性并且可以使用字符串strpos()

if(strpos($resultData->cImage,"http://") === FALSE){
    echo "<img src='serintercement/".$resultData->cImage."' />";    
}else{
    echo "<img src='".$resultData->cImage."' />";    
}

答案 1 :(得分:1)

你可以这样做。

if(strpos($resultData->cImage,"http://") === FALSE){
    echo "<img src='serintercement/".$resultData->cImage."' style='width: 107px; height:102px;' />";    
}else{
    echo "<img src='".$resultData->cImage."' style='width: 107px; height:102px;' />";    
}

更好的选择是你可以定义这样的函数并调用它

checkImage($row['cImage']);//to be called in your first page
checkImage($resultData->cImage);//to be called in your second page
function checkImage($image)
{
    if(strpos($image,"http://") === FALSE){
        echo "<img src='serintercement/".$image."' style='width: 107px; height:102px;' />";    
    }else{
        echo "<img src='".$image."' style='width: 107px; height:102px;' />";    
    }
}

答案 2 :(得分:0)

如果这些cImage字符串来自您的数据库,您可以在查询调用中更正它们。

例如,如果您使用的是MySQL,则可以使用LOCATE() AND CONCAT()来准备数据,如下所示:

SELECT
    IF(LOCATE('http',`cImage`)!=1,CONCAT('serintercement/',`cImage`),`cImage`) `new_cImage`
FROM ...

将条件流程移动到您的查询中,将使您的“显示”代码更加流畅,因为所有准备工作都是提前完成的。

除此之外,你可以通过不重复图像变量之前和之后的html部分来使你的代码更干!...

这是一个内联条件的回声(不是每个人都喜欢这种风格):

echo "<img src=\"",(strpos($resultData->cImage,"http")===0?'':'serintercement/'),"{$resultData->cImage}\" style=\"width:107px;height:102px;\" />\n";

这是一个单独的条件:

echo "<img src=\"";
    if(strpos($resultData->cImage,"http")!==0){
        echo 'serintercement/'
    }
echo "{$resultData->cImage}\" style=\"width:107px;height:102px;\" />\n";

如果你必须在同一个脚本中多次这样做,这是一个函数调用:

function fixPath($img){
    if(strpos($img,"http")===0){
        return $img;
    }
    return "serintercement/$img";
}
echo "<img src=\"",fixPath($resultData->cImage),"\" style=\"width:107px;height:102px;\" />\n";

请注意,我只检查http并且我非常准确地检查它是否来自字符串中的第一个位置。在所有这些替代方案中,我所提出的观点是DRYness(这是所有程序员的典型追求)。您如何选择实施它取决于您的个人偏好。