Dacă vrei să scoți un anumit URL, str_ireplace. Ăsta cred că-i evident, nu insistăm.
Dacă vrei să scoți orice url dintr-un string, cred că poți renunța la reguli complexe și să iei tot ce urmează după http, https sau www până la primul caracter gol.
Acum, ce definește un URL simplu?
protocolul - http/https;
subdomeniul (e.g. www);
domeniul (e.g. site.com);
nu conține nici un spațiu (caracter gol, rând nou etc);
cel puțin unul din primele două puncte trebuiesc să existe.
Prin urmare, trebuie să facem un regex care se pupă cu aceste reguli:
Punem particula www și protocolul într-un singur grup: ((https?:\/\/)|(www\.))
Căutăm orice caracter: (.*?)
Ne oprim înainte de primul caracter gol întâlnit: ([^\s]+)
Tema ta pentru acasă este să combini regex-ul cu preg_replace și să ne pui și soluția aici.
Tine cont ca punctul . inseamna orice caracter si trebuie escaped (protejat?) .
Versiunea de mai jos nu e cea mai buna sau cea mai optimizata, dar functioneaza:
function removeUrls($text){
$regex = "#(https?://|www\.)([^\s]+)\s*#i";
return preg_replace($regex, "", $text);
}
var_dump([
removeUrls("Voltaj - Ca la 20 de ani www.example.com") === "Voltaj - Ca la 20 de ani ",
removeUrls("Voltaj - Ca la 20 de ani www.example.com - Full album") === "Voltaj - Ca la 20 de ani - Full album",
removeUrls("Voltaj - Ca la 20 de ani http://example.com - Full album") === "Voltaj - Ca la 20 de ani - Full album",
removeUrls("Voltaj - Ca la 20 de ani http://www.example.com - Full album") === "Voltaj - Ca la 20 de ani - Full album",
removeUrls("Voltaj - Ca la 20 de ani http://www.example.com") === "Voltaj - Ca la 20 de ani ",
removeUrls("Voltaj - Ca la 20 de ani https://www.example.com - Full album") === "Voltaj - Ca la 20 de ani - Full album",
removeUrls("Voltaj - Ca la 20 de ani https://www.example.com") === "Voltaj - Ca la 20 de ani ",
removeUrls("http://www.example.com Voltaj - Ca la 20 de ani") === "Voltaj - Ca la 20 de ani",
removeUrls("https://example.com Voltaj - Ca la 20 de ani") === "Voltaj - Ca la 20 de ani",
removeUrls("www.example.com Voltaj - Ca la 20 de ani") === "Voltaj - Ca la 20 de ani",
]);