2017-03-28 4 views
0

Ich mag von einer bedingten Teilzeichenfolge Echo:echo ein bedingtes Teilzeichens

<?php echo get_the_title(); ?> 

Der Selektor für meinen Zustand ist „-“ Wenn der Wähler in der Zeichenfolge vorhanden ist, ich als ein Echo will den Teil String hinter dem Selektor. Wenn der Selektor nicht vorhanden ist, möchte ich die gesamte Zeichenfolge wiedergeben. Hier ist meine Idee, aber ich verstehe es nicht funktioniert:

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

Es funktioniert nicht :-( Was sollte ich die bedingte Teilzeichenfolge Echo ändern

+0

where is $ data? –

+0

Das ist ein Zeichencodierungsproblem. Woher hast du den Strich, den du in deiner strpos-Funktion verwendest? Es entspricht nicht dem normalen Strich auf meiner Tastatur. –

Antwort

3

Ich glaube, Sie sind sehr nah es ist nur die Verwendung der substr die

$whatIWant = $data; 

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

echo $whatIWant; 
+0

Hmm, ich interpretierte "hinter dem Selektor", um "rechts von" zu bedeuten ... –

+0

Ich kann sehen, wie es auf diese Weise interpretiert werden kann, ich nahm nur die linke davon an, dass @Filz eine Zeile hat, die sagt ' get_the_title() ', was mich dazu bringt, den Titel einer Webseite zu denken, und als solcher möchte ich nur den linken Teil bekommen, und auch dafür, dass es keinen Syntaxfehler für den Benutzer von substr gab, dass es nicht war Zurückgeben was @Filz wollte, das ist der Teil rechts. – AlphaZygma

0

Ihr Code für den Fall, dass es ein Bindestrich. (Unter der Annahme, dass seltsame strich~~POS=TRUNC korrekt ist.) Aber Sie auch prüfen müssen, um den Fall richtig ist falsch ist, wo Es gibt keinen Bindestrich t Fall, Ihr Code generiert eine leere Zeichenfolge, weil $ whatIWant nicht initialisiert ist. Wenn die Zeichenfolge, die Sie wollen, dass der Teil auf der rechten Seite des Armaturenbretts ist:

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

Wenn die Zeichenfolge Sie ist auf der linken Seite wollen:

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

ich glaube, der Fehler in $ pos war + 1. Wenn wir das programmieren, funktioniert es für mich:

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

Danke. Hilfreich war auch @Chip Dean Ich habe meine Suche auf "–" geändert und es funktioniert. – Filz