Führende Leerzeichen mit PHP kürzen?

Lesezeit: 4 Minuten

Fuhrende Leerzeichen mit PHP kurzen
markratledge

Es scheint einen Fehler in einer WordPress-PHP-Funktion zu geben, der Leerzeichen vor dem Titel der von . generierten Seite hinterlässt <?php echo wp_title(''); ?> Ich habe die WordPress-Dokumente und -Foren zu dieser Funktion ohne Glück durchforstet.

Ich benutze es so <body id="<?php echo wp_title(''); ?>"> um ein HTML-Body-Tag mit der ID des Seitentitels zu generieren.

Was ich also tun muss, ist diesen Leerraum zu entfernen, damit das Body-Tag so aussieht <body id="mypage"> an Stelle von <body id=" mypage">

Der zusätzliche Leerraum tötet das CSS, das ich verwenden möchte, um Menüelemente der aktiven Seite hervorzuheben. Wenn ich manuell ein korrektes Body-Tag ohne Leerzeichen hinzufüge, funktioniert mein CSS.

Wie würde ich also den Leerraum entfernen? Danke, Markus


Teil zwei des Epos

John, ein Hex-Dump war eine gute Idee; es zeigt den Leerraum als zwei “20” Leerzeichen. Aber alle Lösungen, die führende Leerzeichen und Leerzeichen entfernen, taten dies nicht.

Und, <?php ob_start(); $title = wp_title(''); ob_end_clean(); echo $title; ?>

gibt mir < body id ="">

und <?php ob_start(); $title = wp_title(''); echo $title; ?>

gibt mir < body id =" mypage">

Puzzle. Die Wurzel des Problems besteht darin, dass wp_title optionale führende Zeichen für den Seitentitel hat – die wie Chevrons aussehen – die gelöscht werden sollen, wenn die Option false ist, und das sind sie, aber Leerzeichen werden eingefügt.

Gibt es eine nukleare Option?


Ja, habe sie beide schon einmal probiert; sie geben immer noch zwei führende Leerzeichen zurück… arrgg

  1. Entfernen Sie alle Leerzeichen vom linken Ende des Titels:

    <?php echo ltrim(wp_title('')); ?>
    
  2. Entfernen Sie alle Leerzeichen an beiden Enden:

    <?php echo trim(wp_title('')); ?>
    
  3. Entfernen Sie alle Leerzeichen am linken Ende des Titels:

    <?php echo ltrim(wp_title(''), ' '); ?>
    
  4. Entfernen Sie das erste Leerzeichen, auch wenn es nicht das erste Zeichen ist:

    <?php echo str_replace(' ', '', wp_title(''), 1); ?>
    
  5. Entfernen Sie nur ein einzelnes Leerzeichen (kein Zeilenumbruch, kein Tabulator) am Anfang:

    <?php echo preg_replace('/^ /', '', wp_title('')); ?>
    
  6. Entfernen Sie das erste Zeichen, was auch immer es ist:

    <?php echo substr(wp_title(''), 1); ?>
    

Aktualisieren

Aus dem WordPress Dokumentation zu wp_title, anscheinend wp_title zeigt den Titel selbst an, es sei denn, Sie bestehen false für den zweiten Parameter, in welchem ​​Fall es ihn zurückgibt. Also versuche:

<?php echo trim(wp_title('', false)); ?>

  • Den Preis bekommt man auf jeden Fall für Umfang und Abwechslung, und sie alle sollten funktionieren. Aber etwas ist mit der WordPress-Funktion verrückt und ich habe immer noch Whitespace. Firebug zeigt es als Leerzeichen, nicht als irgendeine Art von Zeichen….

    – markratledge

    9. Juli ’09 um 1:23

  • Teil zwei des Epos ist an meine ursprüngliche Frage angeknüpft!

    – markratledge

    9. Juli ’09 um 3:22

  • Warum nicht PHP verwenden, um den resultierenden String in HEX zu konvertieren und zu sehen, welcher Zeichencode am Anfang verwendet wird? Oder Sie könnten immer einfach substr() nehmen und das erste Zeichen abschneiden.

    – Chris Thompson

    9. Juli ’09 um 5:08

  • Dieses Bild hat mich mehr zum Lachen gebracht, als es hätte sein sollen. Ich habe nur eine technische Antwort erwartet und bin darauf gestoßen und es hat mich völlig überrascht.

    – Paolo Bergantino

    9. Juli ’09 um 5:23

  • lol. jemand verdient eine Medaille.

    – bucabay

    9. Juli ’09 um 12:16

Fuhrende Leerzeichen mit PHP kurzen
rauben

ltrim()

ltrim($str)

1641923704 689 Fuhrende Leerzeichen mit PHP kurzen
Chris Thompson

Um hier etwas Abwechslung einzubringen: trimmen

 <body id="<?=trim(wp_title('', false));?>">

1641923704 502 Fuhrende Leerzeichen mit PHP kurzen
Tomdkat

Danke für diese Info! Ich war im selben Boot, als ich Seiten-IDs für CSS-Zwecke basierend auf dem Seitentitel generieren musste, und die obige Lösung funktionierte wunderbar.

Am Ende hatte ich eine zusätzliche Hürde, da einige Seiten Titel mit eingebetteten Leerzeichen haben, also habe ich Folgendes codiert:

<?php echo str_replace(' ','-',trim(wp_title('',false))); ?>

1641923704 720 Fuhrende Leerzeichen mit PHP kurzen
edorianisch

füge dies zu deiner functions.php hinzu

add_filter('wp_title', create_function('$a, $b','return str_replace(" $b ","",$a);'), 10, 2);

sollte wie ein Zauber funktionieren

.

376720cookie-checkFührende Leerzeichen mit PHP kürzen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy