Autor | Zpráva | ||
---|---|---|---|
jirka2 Profil |
Ahoj,
mám string, kde jsou URL oddělené čárkou. Jednotlivé URL dostávám pomocí následujícího PHP příkazu: preg_match_all('/https?:\/\/[^, ]+/', $string, $match) preg_match_all('/https?:\/\/[^, ]+/', $string, $match) $string = "https://en.wikipedia.org/wiki/The_Good,_the_Bad_and_the_Ugly,https://cs.wikipedia.org/wiki/Hodn%C3%BD,_zl%C3%BD_a_o%C5%A1kliv%C3%BD"; $string = "https://en.wikipedia.org/wiki/The_Good,_the_Bad_and_the_Ugly,https://cs.wikipedia.org/wiki/Hodn%C3%BD,_zl%C3%BD_a_o%C5%A1kliv%C3%BD"; Zkoušel jsem i ChatGPT, ale v tomto případě mi umělá inteligence moc nepomohla. |
||
RastyAmateur Profil |
#2 · Zasláno: 18. 3. 2024, 11:40:29
Pokud víš, že každá ta URL adresa začíná na "http(s)://", můžeš to podle toho splitovat. Něco jako:
1$string = "https://en.wikipedia.org/wiki/The_Good,_the_Bad_and_the_Ugly,https://cs.wikipedia.org/wiki/Hodn%C3%BD,_zl%C3%BD_a_o%C5%A1kliv%C3%BD"; $string = "https://en.wikipedia.org/wiki/The_Good,_the_Bad_and_the_Ugly,https://cs.wikipedia.org/wiki/Hodn%C3%BD,_zl%C3%BD_a_o%C5%A1kliv%C3%BD";
$keywords = preg_split("/[,\s]*https?:\/\//", $string);
print_r($keywords);
Array
(
[0] =>
[1] => en.wikipedia.org/wiki/The_Good,_the_Bad_and_the_Ugly
[2] => cs.wikipedia.org/wiki/Hodn%C3%BD,_zl%C3%BD_a_o%C5%A1kliv%C3%BD
) Případně obdobně můžeš upravit regex tak, aby se nezastavil u první čárky, ale u prvního ,http(s):// .
Nebo celkově splitovat podle http(s):// a to odříznutí čárky (a whitespace) vyřešit až v postprocessingu.
A nebo se zamyslet, kde se ti bere $string v tak nepříjemném formátu a zamyslet se, jestli to nejde udělat trochu jinak, aby to následné zpracování bylo přívětivější.
Těch možností je více, záleží jen na tom, jak moc to chceš mít robustní. Aby sis za týden neuvědomil, že vlastně i na tohle řešení se ti objeví nějaký případ, na kterém to neprojde. |
||
Keeehi Profil |
Tento regex zvládne to co chceš na tomto ukázkovém případě. Může to ale selhat na nějakém jiném, tak si to pořádně otestuj. Ale rozhodně, jak píše RastyAmateur, pokud můžeš ovlivnit vstup, tak by bylo mnohem lepší udělat to tam.
https?:\/\/.+?(?=(?:,https?:\/\/|$)) https?:\/\/.+?(?=(?:,https?:\/\/|$)) |
||
jirka2 Profil |
#4 · Zasláno: 18. 3. 2024, 14:22:22
Máte pravdu oba, ten vstupní soubor je taková všehochuť. Nejprve jsem jej projel a opravil některé zbytečné komplikovanosti. To je nejlepší řešení. Ale zase jsem se něčemu přiučil a za to vám oběma děkuji.
|
||
Časová prodleva: 1 rok
|
Toto vlákno je staré, již dlouho do něj nikdo nepřispíval.
Informace a odkazy zde uváděné už nemusejí být aktuální. Nechcete-li řešit zde uvedenou konkrétní otázku, založte si vlastní vlákno, nepište do tohoto. Vložíte-li sem nyní příspěvek, upoutáte pozornost mnoha lidí a někteří z nich si jen kvůli vám přečtou i všechny předcházející příspěvky. Předpokládáte-li, že váš text skutečně bude hodnotný, stiskněte následující tlačítko:
Běda vám, jestli to bude blábol.
0