如何使用 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(这是所有程序员的典型追求)。您选择如何实施取决于您的个人喜好。
我的主页显示了一些上传的图片。
我从数据库中取出它,由于目录问题,我使用 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(这是所有程序员的典型追求)。您选择如何实施取决于您的个人喜好。