2017-03-28 6 views
0

をエコーセレクタの後ろにあります。セレクタが存在しない場合は、完全な文字列をエコーし​​ます。 は、ここに私の考えですが、私はそれが働いて得ることはありません:?それは :-(動作していないから、私は条件付きの部分文字列をエコーし​​たい条件付きサブ

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

が、私は条件付きの部分文字列をエコーする何を変更する必要があります

+0

$ dataはどこですか? –

+0

これは文字エンコードの問題です。 strpos関数の中でどこでダッシュを取得しましたか?キーボードの通常のダッシュとは異なります。 –

答えて

3

私はあなたが非常に接近していると思います、それは(。変なダッシュ文字が正しいと仮定)。

$whatIWant = $data; 

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

echo $whatIWant; 
+0

ええと、私は「セレクタの後ろ」を「右に」意味するように解釈していました... –

+0

それはそのように解釈する方法を見ることができます。私はそれに基づいて左を仮定しました@Filzは ' get_the_title() 'を呼び出すと、ウェブページのタイトルを考えることができます。ちょっと左の部分を取得したいだけでなく、substrのユーザに構文エラーはありませんが、 @ Filzが望んだものを返します。これは右側の部分です。 – AlphaZygma

0

あなたのコードは、ダッシュがありますケースのために正しい正しくないsubstrだけの使用である。しかし、あなたはまた、どこのケースを考慮する必要がありますダッシュはありません。 $ 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; 
0

私はエラーが$ posの+ 1にあったと思います。これをコード化すると、それは私のために働く:

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

ありがとうございます。私は "–"に検索を変更し、それは動作します。 – Filz