echo一个条件子串

时间:2017-03-28 16:29:34

标签: php if-statement substring

我想回应来自:

的条件子字符串
<?php echo get_the_title(); ?>

我的条件选择器是“ - ” 如果选择器存在于字符串中,我想作为子串回显选择器后面的部分。如果选择器不存在,我想回显完整的字符串。 这是我的想法,但我没有得到它的工作:

if (($pos = strpos($data, " – ")) !== FALSE) {
$whatIWant = substr($data, $pos+1); 
}
echo $whatIWant; ?>

它无法正常工作:-( 我应该改变什么来回应条件子串?

3 个答案:

答案 0 :(得分:3)

我认为你非常接近,只是使用substr是不正确的

$whatIWant = $data;

if (($pos = strpos($data, " – ")) !== FALSE) {
    $whatIWant = substr($data, 0, $pos); 
}

echo $whatIWant;

答案 1 :(得分:0)

您的代码适用于短划线的情况。 (假设奇怪的破折号字符是正确的。)但你还必须考虑没有破折号的情况。在这种情况下,您的代码会生成一个空字符串,因为$ whatIWant未初始化。如果您想要的字符串是短划线右侧的部分:

$pos = strpos($data, ' - ');
$whatIWant = substr($data, $pos === false ? 0 : $pos + 3);
echo $whatIWant;

如果你想要的字符串在左边:

$pos = strpos($data, ' - ');
$whatIWant = $pos === false ? $data : substr($data, 0, $pos);
echo $whatIWant;

答案 2 :(得分:0)

我认为错误是在$ pos + 1。当我们对此进行编码时,它对我有用:

$data = "bye – hello";
$whatIWant = $data;
$search = " – ";
if (($pos = strpos($data, $search)) !== FALSE) {
    $whatIWant = substr($data, $pos+strlen($search)); 
}
echo $whatIWant;