Ich versuche verzweifelt, John Grubers URL zu veranlassen, Regexe zu erkennen, um richtig zu arbeiten! Die einfache Funktion, die ich geschrieben habe, gibt immer false zurück, auch wenn eine krasse URL enthalten ist!
Ich versuche, in 2 verschiedenen Funktionen auf URLs und webspezifische URLs zu testen. Ich bin ziemlich neu bei Regexs, also bin ich es mit ziemlicher Sicherheit!
Funktion:
<?php
function isweburl($url)
{
return(preg_match("(?i)b((?:https?://|wwwd{0,3}[.]|[a-z0-9.-]+[.][a-z]{2,4}/)(?: [^s()<>]+|(([^s()<>]+|(([^s()<>]+)))*))+(?:(([^s()<>]+|(([^s()<>]+)))*)|[^s`! ()[]{};:"".,<>?«»“”‘’]))", $url));
}
function isanyurl($url)
{
echo "suspected url:$url<br>";
return(preg_match("/(?i)b((?:https?://|wwwd{0,3}[.]|[a-z0-9.-]+[.][a-z]{2,4}/)(?: [^s()<>]+|(([^s()<>]+|(([^s()<>]+)))*))+(?:(([^s()<>]+|(([^s()<>]+)))*)|[^s`! ()[]{};:"".,<>?«»“”‘’]))/", $url));
}
$test=isanyurl("http://www.sega.com");
var_dump($test);
echo "<br>web test:<br>";
$test=isweburl("http://www.sega.com");
var_dump($test);
?>
Vielen Dank im Voraus für jede Hilfe!
Antworten:
1 für die Antwort № 1Unten ist Ihr regulärer Ausdruck.
Ich denke, preg_match braucht einen Regex-Delimeter "/ regex /" oder "~ regex ~".
Wenn Sie das Delimeter jedoch als Zeichen im regulären Text verwenden, muss es maskiert werden.
"
(?i)b
(
(?:
https?://
| wwwd{0,3}[.]
| [a-z0-9.-]+[.][a-z]{2,4}/
)
(?:
[^s()<>]+
| (
(
[^s()<>]+
|
(
([^s()<>]+)
)
)*
)
)+
(?:
(
(
[^s()<>]+
|
(
([^s()<>]+)
)
)*
)
| [^s`! ()[]{};:"".,<>?«»“”‘’]
)
)
"
Seit Ihrer Verwendung /
Versuchen Sie, als Zeichen einen anderen Begrenzer zu verwenden.
Erweitert -
"~
(?i)b
(
(?:
https?://
| wwwd{0,3}[.]
| [a-z0-9.-]+[.][a-z]{2,4}/
)
(?:
[^s()<>]+
| (
(
[^s()<>]+
|
(
([^s()<>]+)
)
)*
)
)+
(?:
(
(
[^s()<>]+
|
(
([^s()<>]+)
)
)*
)
| [^s`! ()[]{};:"".,<>?«»“”‘’]
)
)
~x"