webForumDet fria alternativet

RegExp: Innehåller strängen länkar?

PHP

2 svar · 422 visningar · startad av Peeer

Medlem sedan mars 20025 907 inlägg
Frågan#1

Jag fattar inte hur svårt det här kan vara. Jag har en funktion som gör länkar av alla url:er i en sträng. Nu tänkte jag återanvända de mönstren som finns i funktionen för att göra en funktion som bara talar om om det finns länkar i strängen, dvs returnerar true/false

<?php
function strLinks($text) {
	
	$text = preg_replace('%(<a\s[^>]+>http://[^\s]+</a>)|(<[^>]+http://[^>]+>)|(http://)[^\s]+%ie',
		'"$0"=="$1" || "$0"=="$2" ? "$0" : "<a href=\"$0\" >$0</a>"', $text);
	$text = preg_replace('%(<a\s[^>]+>http://|www.[^\s]+</a>)|(<[^>]+www.[^>]+>)|(www.)[^\s]+%ie',
                  '"$0"=="$1" || "$0"=="$2" ? "$0" : "<a href=\"http://$0\" >$0</a>"', $text);	
	return $text;
}
?>

Men hur sjutton gör jag det? Mönstren lyckas jag trycka in i preg_match(), men if-satserna som finns i funktionen ovan vet jag inte vad jag ska göra med. Hilfe bitte! :)

Medlem sedan juni 20001 251 inlägg
#2

Hej igen! Skippade dina uttryck, matchar dock samma som i min förra post, så det bör inte orsaka några bekymmer. preg_match returnerar 1 vid "träff" och "0" om inget hittas.

<?php 
function strLinks($text) {  
    return preg_match("/((?:http:\/\/(?:www\.)?|www\.))([\w??????!?.,-]+)/i", $text); 
} 

echo strLinks("http://www.google.se är en bra sida.");
echo "<br />";
echo strLinks("www.google.se är en bra sida.");
echo "<br />";
echo strLinks("Denna sträng saknar url, men innehåller www. och http://");
?>
Medlem sedan mars 20025 907 inlägg
#3

Strålande!
Fixade till så det måste vara ett whitespace framför url:en samt petade in ett whitespace först i strängen. Nu fungerar det kanoners! Tack!

function strLinks($text) {  
    return preg_match("/(\s(?:http:\/\/(?:www\.)?|www\.))([\w??????!?.,-]+)/i", ' '. $text);
}
250 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)