如果变量是字符串,则返回不同的代码

时间:2015-04-28 20:31:34

标签: php

如果变量是字符串,我想返回一小段代码,但如果它是空的,则返回文本“no image”。

function link_img_preview( $atts, $content = null ) {
    if ( is_string( $content ) ) {
        $content = do_shortcode( str_replace( '###SPACE###', '', $content ) );
    }
    if ( is_string( $content ) == false ) {
        $content = 'no image';
    }
    require_once('OpenGraph.php');
    $graph = OpenGraph::fetch($content);
    $return = '<img class="link-image" src=';
    $return .= $graph->image;
    $return .= '>';
    return $return;
}

5 个答案:

答案 0 :(得分:1)

无需过度复杂化。默认值$content = null将评估为false,因此如果您不提供第二个参数,您将获得“无图像”。如果你传递一个空字符串,它将被评估为false,因此你将得到“没有图像”。如果你将一个不是字符串的东西传递给这个似乎期待字符串的函数,它会抛出一个错误,这似乎是一个合理的反应。

if ($content) {
    $content = do_shortcode( str_replace( '###SPACE###', '', $content ) );
} else {
    $content = 'no image';
}

答案 1 :(得分:0)

使用empty()

if(empty($yourstring))
{
//your code
}

代码:

function link_img_preview( $atts, $content = null ) {
if (!empty($content)) {
$content = do_shortcode( str_replace( '###SPACE###', '', $content ) );
}else{
$content = 'no image';
}
require_once('OpenGraph.php');
$graph = OpenGraph::fetch($content);
$return = '<img class="link-image" src=';
$return .= $graph->image;
$return .= '>';
return $return;
}

答案 2 :(得分:0)

检查$ content是否已经是一个字符串,但也检查字符串是否为空。像$a = "";这样的东西也是一个字符串。

执行所需操作的代码如下

function link_img_preview( $atts, $content = null ) {
  if ( !is_string( $content ) || empty ( $content) ) {
    $content = 'no image';
  } else {
    $content = do_shortcode( str_replace( '###SPACE###', '', $content ) );
  }
  require_once('OpenGraph.php');
  $graph = OpenGraph::fetch($content);
  $return = '<img class="link-image" src=';
  $return .= $graph->image;
  $return .= '>';
  return $return;
}

答案 3 :(得分:0)

另外,只需要一点点清洁,在src val

周围添加双引号
$return = '<img class="link-image" src="';
$return .= $graph->image;
$return .= '" >';

(参见最后一行的"

答案 4 :(得分:0)

好的,看了你的例子,我意识到我一开始就错了。以下是最终为我解决的问题。非常感谢你的帮助!

function link_img_preview( $atts, $content = null ) {
require_once('OpenGraph.php');
    if ( is_string( $content ) ) {
        $content = do_shortcode( str_replace( '###SPACE###', '', $content ) );
}

$graph = OpenGraph::fetch($content);
if (!empty($graph->image)) {
$return = '<img class="link-image" src=';
$return .= $graph->image;
$return .= '>';
return $return;}
else{
return 'no image';

} }