2017-02-28 2 views
1

Wie einige Teile URL in php echo Syntax für diesen Linkeinige Teile einer URL in php entfernen echo

http://www.celebrationinvites.com/retro_blocks_maroon_white_graduation_announcement_zazzle_invitation2-256439384662275012.html 

diesem Code

<meta name="twitter:image" value="<?php echo(str_replace("367.jpg", "150.jpg", $imageSrc)) ?>" /> 

ist macht dieses

<meta name="twitter:image"  
    value="https://rlv.zcache.com/retro_blocks_maroon_white_graduation_announcement-r86c000be19e542fa8a3430823ddc7146_6gdu5_150.jpg?rlvnet=1&amp;bg=0xFFFFFF" /> 
entfernen

Die & wird codiert d

 &amp; 

eine Ahnung, wie dieser Teil zu entschlüsseln, so ist es nur ein &. auch alles komplett entfernen, nachdem

nur ein Anfänger .jpg, so ist dies, was ich versuchte

<meta name="twitter:image" value="<?php echo (substr($string, 0, -25, $imageSrc)) ?>" /> 

nicht Arbeits bitte helfen Mit freundlichen Grüßen Maria

Antwort

2

Ihre erste echo und str_replace nicht kodiert &. Es ist bereits in Ihrer $imgSrc Variable codiert. Sie können das mit die urldecode und urlencode Funktionen manipulieren, aber ich glaube nicht, es wird benötigt, da Sie entfernen werden, was nach dem .jpg sowieso ist.

Der Ansatz substr ist korrekt, aber Sie haben die Funktion missbraucht. Der erste Parameter ist die zu manipulierende Zeichenfolge. Du hast es bestanden. Es gibt eigentlich kein Argument.

Auch <?php echo ... ?> kann auf <?= .. ?> reduziert werden. So wird dies Arbeit:

<meta ... value="<?= substr($imageSrc, 0, -25) ?>" /> 

Wenn Sie nicht im Voraus wissen kann, wo die .jpg ist, können Sie es suchen und verwenden Sie die resultierende Position als Länge für substr, plus einem Offset von diese Nadellänge selbst:

<meta ... value="<?= substr($imageSrc, 0, strpos($imageSrc, '.jpg')+4) ?>" /> 

Statt strpos gibt es auch strrpos für den umgekehrten Ansatz. Und die Regex-Optionen. Viele Optionen!

+0

arbeitete wie ein Charme! ich danke dir sehr! also, wenn ich diese beiden kombinieren wollte " /> damit das Bild verkleinert wird und die Teile after.jpg entfernt werden ... wie gehe ich vor über das? auch in der Lösung über das gab, was tut +4)?>“/> dieser Teil tun? Was macht +4 fragen tatsächlich um den Code zu tun? :) Nochmals vielen Dank! – KeenLearner

+0

Hallo @KeenLearner glücklich, dass es Über das Kombinieren können Sie die Funktionsaufrufe verschachteln.Verwenden Sie anstelle der Zeichenfolge in einem der Funktionsaufrufe die andere Funktion, etwa wie 'substr (str_replace (" ... "), 0, -25)'. Entweder das oder in zwei Schritten woanders vorher in deinem PHP-Code, wie das Speichern der Transformation in eine neue Zeichenkette und dann wieder. Wenn du detailliertere Hilfe benötigst, poste bitte eine andere getrennte Frage und wir werden glücklich darin springen. – sidyll

+0

@KeenLearner in Bezug auf '+ 4', wie Sie wissen, erzeugt 'substr' einen Unterstring vom zweiten Parameter zum dritten, in diesem Fall 0 zu dem, was vom Funktionsaufruf zurückgegeben wird.' strpos' gibt das posi zurück der gesuchten Saite, sondern die Position des ersten Charakters. Ohne die +4 würde es auch den '.jpg' Teil schneiden. Es ist also nur ein Offset, der zu der von 'strpos' zurückgegebenen Zahl addiert wird. einfache Arithmetik – sidyll

0

die PHP-Funktion parse_url() Verwenden Sie die Eingabe URL in Komponenten aufgeteilt:

$pieces = parse_url("https://rlv.zcache.com/retro_blocks_maroon_white_graduation_announcement-r86c000be19e542fa8a3430823ddc7146_6gdu5_150.jpg?rlvnet=1&amp;bg=0xFFFFFF"); 
print_r($pieces); 

Dies ist das Ergebnis:

Array 
(
    [scheme] => https 
    [host] => rlv.zcache.com 
    [path] => /retro_blocks_maroon_white_graduation_announcement-r86c000be19e542fa8a3430823ddc7146_6gdu5_150.jpg 
    [query] => rlvnet=1&amp;bg=0xFFFFFF 
) 

Wählen Sie die Komponente aus dem zurückgegebenen Array müssen, ändern Sie sie und komponieren die neue URLUm den Pfad zu ändern, können Sie substr() (oder andere string functions), preg_replace() oder pathinfo() verwenden.

Zum Beispiel:

// Use regexp to make sure the string is replaced only at the end of the path 
$path = preg_replace('/367\.jpg$/', '150.jpg', $pieces['path']); 

Dann nur die Stücke, die Sie zusammenstellen müssen:

$url = $pieces['scheme'].'://'.$pieces['host']; 
if ($pieces['port']) { 
    $url .= ':'.$pieces['port']; 
} 
$url .= $path;