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

How to use strpos() to check a variable's path?

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

我从数据库中取出它,由于目录问题,我使用 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()

你应该可以类似地检查路径-只要设置了对象的属性和字符串,就可以使用strpos()

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

你可以这样做。

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;' />";    
    }
}

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

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

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

将条件过程移动到您的查询中,将使您的 "displaying" 代码阅读起来更加流畅,因为所有的准备工作都提前完成了。


除此之外,您可以通过不重复图像变量前后的 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(这是所有程序员的典型追求)。您选择如何实施取决于您的个人喜好。