/ Son sonra her şeyi toplamak için Düzenli İfade

7 Cevap php

Ben düzenli ifadelere yeniyim ve merak nasıl cümle son / sonra her şeyi toplar biri için.

Google'ın GData tarafından kullanılan bir kimlik çıkarma ediyorum.

Benim örnek dizedir

http://spreadsheets.google.com/feeds/spreadsheets/p1f3JYcCu_cb0i0JYuCu123

Kimliği Nerede: p1f3JYcCu_cb0i0JYuCu123

Oh ve PHP kullanıyorum.

7 Cevap

Bu dizenin sonunda izledi (bir şey değil bir taksim) en az biriyle eşleşir:

[^/]+$


Notes:

  • Sonuç grubuna 0 (maç kendisi) gider - Hayır Pars herhangi grupları gerekmez çünkü.
  • Kullanımları +, böylece (yerine * arasında) son karakter eşleşmesi (yerine boş bir dize eşleştirme) başarısız bir çizgi ise.


But, most likely a faster and simpler solution is to use your language's built-in string list processing functionality - i.e. ListLast( Text , '/' ) or equivalent function.

PHP için, en yakın fonksiyon aşağıdaki gibi strrchr hangi eserler olduğunu:

strrchr( Text , '/' )

Bu sonuçlar çizgi içerir - Aşağıdaki Teddy'nin Yorumlarınız başına, birlikte çizgi kaldırabilirsiniz substr:

substr( strrchr( Text, '/' ), 1 );

Genel olarak:

/([^/]*)$

İstediğiniz veriler daha sonra birinci grubun maç olacaktır.


PHP kullanarak konum beri Edit, ayrıca kullanabilirsiniz strrchr that’s returning everything from the last occurence of a character in a string up to the end. Or you could use a combination of strrpos and substr , first find the position of the last occurence and then get the substring from that position up to the end. Or explode {[(5 )]} , split the string at the / ve sadece son kısmını olsun.

Ayrıca basename fonksiyonu ile "dosya" ya son bölümünü alabilirsiniz.

<?php
$url = 'http://spreadsheets.google.com/feeds/spreadsheets/p1f3JYcCu_cb0i0JYuCu123';

echo basename($url); // "p1f3JYcCu_cb0i0JYuCu123"

Benim makinam Ben sadece tam URL'yi geçebileceği. Bu önden http:/ sökmek gerekebilir mümkündür.

Basename ve dirname, bir Unix filepath benziyor şey aracılığıyla taşımak için mükemmeldir.

/^.*\/(.*)$/

Satır ^ = başlangıç

Son gerçekleşmemesi için .*\/ = açgözlü maçı için / satır başından

/ Son gerçekleşmemesi sonra gelen her şeyi (.*) = grup

Bu desen $0 son çizgi yakalamak değil, ve hiçbir karakter son bölü sonra varsa o şey maç olmayacak.

/(?<=\/)([^\/]+)$/

Edit: ama ECMAScript (JavaScript, Actionscript), Ruby veya a few other flavors tarafından desteklenen, Geriye İlerleme gerektirir. Eğer bu lezzetleri birini kullanıyorsanız, kullanabilirsiniz:

/\/([^\/]+)$/

Ama will $0 son çizgi yakalar.

Bir PHP programcısı, ama strrpos değil başlamak için daha umut verici bir yer gibi görünüyor. Sağdaki '/' Bul ve geçmiş her şey arıyor budur. Kullanılmadı regex.

Bir dize bir karakter son oluşumu konumunu bulmak

Eğer normal dize bölünmüş can

$str = "http://spreadsheets.google.com/feeds/spreadsheets/p1f3JYcCu_cb0i0JYuCu123";
$s = explode("/",$str);
print end($s);