Как вытащить слова из текста?

Это регулярное выражение 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>";

Результат будет таким:
Типа читайте люди маны На РУССКОМ Будете здоровы abc qwe zxc

Добавлено: 08 Августа 2018 08:29:33 Добавил: Андрей Ковальчук

Удалить из строки параметр page и добавить другой page.

Этот пример позволяет заменить один параметр на другой не испортив все остальные параметры строки. Если Вы найдете более оптимальное решение, присылайте.

$href1=str_replace('&&','&',str_replace('?&','?',preg_replace("/&*page=([0-9]{1,3})&*/i", '&', $_SERVER['REQUEST_URI'])));
$href1=str_replace('?&','?',$href1.(strpos($href1, '?')===false?'?':'&').'page=');

Добавлено: 08 Августа 2018 08:28:20 Добавил: Андрей Ковальчук

Есть ли в строке параметров сессия (PHPSESSID):

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 'Нет';

Добавлено: 08 Августа 2018 08:27:55 Добавил: Андрей Ковальчук

Исключение GET-запроса из URL.

Иногда нужно получить URL без GET-параметров (например, при перенаправлении запросов с помощью mod_rewrite зачастую требуется проводить анализ URL, чтобы сформировать ответ клиенту; нередко для анализа нужна только статическая часть URL, а часть, где передается GET-запрос, не нужна и даже мешает).

// удаление GET-параметров из URL
$str = preg_replace('/^(.+?)(\?.*?)?(#.*)?$/', '$1$3', $url);

Добавлено: 08 Августа 2018 08:27:02 Добавил: Андрей Ковальчук

Получение строки GET-запроса.

Для начала поставим самую простую задачу - получить часть URL, содержащую GET-параметры.

function ggp($url) { // get GET-parameters string
    preg_match('/^(.+?)(\?.*?)?(#.*)?$/', $url, $matches);
    $gp = (isset($matches[2])) ? $matches[2] : '';
    return $gp;
}

Не стоит забывать, что адрес может вовсе не содержать никакого GET-запроса, и массив вхождений может не иметь второго элемента 3.

Добавлено: 08 Августа 2018 08:26:36 Добавил: Андрей Ковальчук

preg_replace_callback()

// Пользовательская функция. Будет вызываться для каждого
// совпадения с регулярным выражением.
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);

Добавлено: 08 Августа 2018 08:26:12 Добавил: Андрей Ковальчук

Различные флаги preg_match_all()

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";
}

Добавлено: 08 Августа 2018 08:25:42 Добавил: Андрей Ковальчук

Сравнение &quot;жадных&quot; и &quot;ленивых&quot; квантификаторов

$str = '[b]жирный текст [b]а тут - еще жирнее
вернулись[/b]';
$to = '<b>$1</b>';
$re1 = '|\[b\] (.*) \[/b\]|ixs';
$re2 = '|\[b\] (.*?) \[/b\]|ixs';
$result = preg_replace($re1, $to, $str);
echo "Жадная версия: ".htmlspecialchars($result)."<br />";
$result = preg_replace($re2, $to, $str);
echo "Ленивая версия: ".htmlspecialchars($result)."<br />";[/PHP]

Добавлено: 08 Августа 2018 08:23:15 Добавил: Андрей Ковальчук