vollständigen Pfad entfernen, nur Dateinamen beibehalten

Lesezeit: 2 Minuten

Der Versuch, die vollständige URL zu entfernen, die an imgurl zurückgegeben wird: Gibt normalerweise etwas zurück wie http://localhost/wordpress/wp-content/uploads/dateiname.jpg
oder http://localhost/wordpress/wp-content/uploads/images/filename.jpg

Ich möchte alles außer filename.jpg entfernen und an ahng_photos_upload_image zurückgeben. Entfernen Sie alles bis zum letzten Schrägstrich. Wie kann ich das mit Jquery machen?

window.send_to_editor = function(html) {
imgurl = jQuery('img',html).attr('src');
jQuery('#ahng_photos_upload_image').val(imgurl);
tb_remove();
}

  • txt.substring(txt.lastIndexOf(“/”) + 1)

    – Kamyar Nazeri

    19. Februar 2012 um 21:22 Uhr

Benutzer-Avatar
Andy

Dafür brauchen Sie kein jQuery, einfach altes JavaScript reicht 🙂

alert('http://localhost/wordpress/wp-content/uploads/filename.jpg'.split("https://stackoverflow.com/").pop());​​

In Ihrem Fall:

var filename = imgurl.split("https://stackoverflow.com/").pop();

  • Klappt wunderbar. Vielen Dank. Ich muss eine Suche durchführen, um zu sehen, wie split() und pop() funktionieren.

    – Benutzer1219691

    19. Februar 2012 um 23:15 Uhr

  • @nevermind Eigentlich sind die Pfade in Linux /. Sie sind ` in windows. But it wouldn't matter anyway, since we're talking about URLs which are always /` und keine Pfade.

    – Andy

    29. August 2015 um 19:53 Uhr

  • @Andy, wenn der Pfad von einer URL stammt, funktioniert es möglicherweise, aber wenn Sie versuchen, eine Datei hochzuladen, würde der Wert der Eingabe etwa so lauten: “C:\fakepath\filename.txt” (getestet auf meinem localhost unter Ubuntu in Chromium ). Aus diesem Grund bevorzuge ich persönlich den Regex-Weg.

    Benutzer3845133

    30. August 2015 um 9:24 Uhr


Sie können einen regulären Ausdruck verwenden, um dies zu erreichen.

var file = imgUrl.replace(/^.*[\\\/]/, '');

Jetzt würde die Datei nur noch aus dem Dateinamen bestehen ..

Wenn Sie ziemlich sicher sind, dass die URLs keine komischen Dinge wie Hashes oder Parameter haben, würde eine Regex wie diese es tun:

var filename = imgurl.replace(/^.*\/([^/]*)$/, "$1");

Außerdem: Vergessen Sie nicht, “imgurl” mit zu deklarieren varund das solltest du wahrscheinlich verwenden .prop() Anstatt von .attr() wenn Ihre Version von jQuery 1.6 oder neuer ist:

var imgurl = jQuery('img', html).prop('src');

Auch jQuery wandelt die Zwei-Argumente-Form der Funktion intern in Folgendes um:

var imgurl = jQuery(html).find('img').prop('src');

also könntest du es genauso gut so codieren.

Eine weitere Möglichkeit:

var filename = imgurl.substring(imgurl.lastIndexOf("https://stackoverflow.com/") + 1);

JS Fiddle-Demo.

Hier hast du

var filename = imgurl.split("https://stackoverflow.com/").slice(-1);

Viel Glück!

Benutzer-Avatar
Gemeinschaft

Probier diese:

imgurl.split("https://stackoverflow.com/").slice(-1);

Bearbeiten: Sehen Sie sich die Version von @Andy an, die die verwendet pop() Methode, letztere ist schneller als slice(-1).

Benutzer-Avatar
sdw

Beachten Sie, dass Sie, wenn Sie nicht wissen, ob Sie Schrägstriche oder Rückwärtsstriche haben, besser dran sind, die RE-Version von split zu verwenden:

"path".split(/[\/\\]/).slice(-1)

1384880cookie-checkvollständigen Pfad entfernen, nur Dateinamen beibehalten

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

Privacy policy