Получить все ссылки с html файла
preg_match_all('/(<a[^>]*)href=(\"?)([^\s\">]+?)(\"?)([^>]*>)/ismU',$text,$res);
В $res[3] будут нужные вам ссылки.
Добавлено: 28 Марта 2021 07:18:30 Добавил: Андрей Ковальчук
preg_match_all('/(<a[^>]*)href=(\"?)([^\s\">]+?)(\"?)([^>]*>)/ismU',$text,$res);
Это регулярное выражение PHP разбирает текст на отдельные слова, основываясь на определении: слово - это непрерывная последовательность букв английского или русского алфавитов.
$x="Типа, %^& читайте___люди~~~~__маны__ На... РУССКОМ!! Будете+здоровы. abc, qwe, zxc"; preg_match_all('/([a-zA-Zа-яА-Я]+)/',$x,$ok); for ($i=0; $i<count($ok[1]); $i++) echo $ok[1][$i]."<br>";
$time = "10:11"; if (!preg_match('/^([0-1][0-9]|[2][0-3]):([0-5][0-9])$/', $time)) echo "Время введено неправильно";
print $_SERVER['REQUEST_URI'].'<br>'; if (preg_match("/=([a-f0-9]{32})&/i", $_SERVER['REQUEST_URI'].'&')){ print 'Да'; // удалить сессию из строки параметров //print str_replace('&&','&',str_replace('?&','?',preg_replace("/&*sid=([a-f0-9]{32})&*/i", '&', $_SERVER['REQUEST_URI']))); } else print 'Нет';
$value = preg_replace('/[^\d,]+/', '', $value); // заменить все символы кроме чисел и запятой на ''
Иногда нужно получить URL без GET-параметров (например, при перенаправлении запросов с помощью mod_rewrite зачастую требуется проводить анализ URL, чтобы сформировать ответ клиенту; нередко для анализа нужна только статическая часть URL, а часть, где передается GET-запрос, не нужна и даже мешает).
// удаление GET-параметров из URL $str = preg_replace('/^(.+?)(\?.*?)?(#.*)?$/', '$1$3', $url);
Для начала поставим самую простую задачу - получить часть URL, содержащую GET-параметры.
function ggp($url) { // get GET-parameters string preg_match('/^(.+?)(\?.*?)?(#.*)?$/', $url, $matches); $gp = (isset($matches[2])) ? $matches[2] : ''; return $gp; }
// Пользовательская функция. Будет вызываться для каждого // совпадения с регулярным выражением. function toUpper($pockets) { return $pockets[1].strtoupper($pockets[2]).$pockets[3]; } $str = '<hTmL><bOdY bgcolor="white">Three captains, one ship.</bOdY></html>'; $str = preg_replace_callback('{(</?)(\w+)(.*?>)}s', "toUpper", $str); echo htmlspecialchars($str);
Header("Content-type: text/plain"); $flags = array( "PREG_PATTERN_ORDER", "PREG_SET_ORDER", "PREG_SET_ORDER|PREG_OFFSET_CAPTURE", ); $re = '|<(\w+).*?>(.*?)</\1>|s'; $text = "<b>текст</b> и еще <i>другой текст</i>"; echo "Строка: $text\n"; echo "Выражение: $re\n\n"; foreach ($flags as $name) { preg_match_all($re, $text, $pockets, eval("return $name;")); echo "Флаг $name:\n"; print_r($pockets); echo "\n"; }
foreach (preg_grep('/^ex\d/s', glob("*")) as $fn) echo "Файл примера: $fn<br />";
$st = '<b>жирный текст</b>'; $re = '|<(\w+).*?>(.*?)</\1>|s'; preg_match($re, $st, $p, PREG_OFFSET_CAPTURE); echo "<pre>"; print_r($p); echo "</pre>";
$str = file_get_contents(__FILE__); $str = preg_replace('/^/m', "\t", $str); echo "<pre>".htmlspecialchars($str)."</pre>";
$str = '[b]жирный текст [b]а тут - еще жирнеевернулись[/b]';
$str = "Hello, this <b>word</b> is <b>bold</b>!"; $re = '|<(\w+) [^>]* > (.*) </\1>|xs'; preg_match($re, $str, $pockets) or die("Нет тэгов."); echo htmlspecialchars("'$pockets[2]' обрамлено тэгом '$pockets[1]'");
$str = "Hello, this <b>word</b> is bold!"; $re = '|<(\w+) [^>]* > (.*?) </\1>|xs'; preg_match($re, $str, $pockets) or die("Нет тэгов."); echo htmlspecialchars("'$pockets[2]' обрамлено тэгом '$pockets[1]'");