Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Php выделение участка строки.

2.1K
28 июля 2005 года
FIRESTARTER
90 / / 29.05.2005
Не могу реализовать алгоритм:
нужно присвоить переменным участи из текста,начинающиеся например с "абв" и заканчивающийся "орп".
Причём таких участков много,но содержание между "абв" и "орп" разное.
8
28 июля 2005 года
mfender
3.5K / / 15.06.2005
Цитата:
Originally posted by FIRESTARTER
Не могу реализовать алгоритм:
нужно присвоить переменным участи из текста,начинающиеся например с "абв" и заканчивающийся "орп".
Причём таких участков много,но содержание между "абв" и "орп" разное.


PCRE.

365
29 июля 2005 года
MasterSID
230 / / 23.02.2003
Цитата:
Originally posted by mfender
PCRE.


Да, почитай в доке этот раздел. Там много полезных функций типа preg_match, preg_replace, preg_replace_callback

2.1K
21 августа 2005 года
FIRESTARTER
90 / / 29.05.2005
Цитата:
Originally posted by MasterSID
Да, почитай в доке этот раздел. Там много полезных функций типа preg_match, preg_replace, preg_replace_callback


Почитал.
Так и не понял как ими пользоваться.
Допустим у меня в $page содержится HTML код.

$search="http://someste.com/files/001.mp3";

preg_match ($page,$search,$matches);

В этом случае элементам массива $matches присвоятся все встречающиеся в коде ссылки,начинающиеся с "http://" и заканчивающиеся ".mp3" ?

338
21 августа 2005 года
chigevara
529 / / 29.09.2003
Цитата:
Originally posted by FIRESTARTER
Почитал.
Так и не понял как ими пользоваться.
Допустим у меня в $page содержится HTML код.

$search="http://someste.com/files/001.mp3";

preg_match ($page,$search,$matches);

В этом случае элементам массива $matches присвоятся все встречающиеся в коде ссылки,начинающиеся с "http://" и заканчивающиеся ".mp3" ?



/http:\/\/(.*?)\.mp3/g чтобы поймать
s/(http:\/\/)(.*?)(\.mp3)/$1$2$3/ig чтобы выделить
Второй чисто перловый.
В общем регексы - сила!

4.7K
26 августа 2005 года
Extractor
151 / / 26.08.2005
Цитата:
Originally posted by FIRESTARTER
Почитал.
Так и не понял как ими пользоваться.
Допустим у меня в $page содержится HTML код.

$search="http://someste.com/files/001.mp3";

preg_match ($page,$search,$matches);

В этом случае элементам массива $matches присвоятся все встречающиеся в коде ссылки,начинающиеся с "http://" и заканчивающиеся ".mp3" ?



обращаю внимание что это функция для поиска с использованием регулярных выражений. Выглядит это скорее так preg_match ([COLOR=red]$search,$page[/COLOR],$matches);

preg_match ("/http:\/\/(.*?)\//i",$page,$matches);
$matches[0] -
$matches[1] - имеет все символы до первого слэша, т.е. то что в скобках

2.1K
28 августа 2005 года
FIRESTARTER
90 / / 29.05.2005
Цитата:
Originally posted by chigevara
/http:\/\/(.*?)\.mp3/g чтобы поймать
s/(http:\/\/)(.*?)(\.mp3)/$1$2$3/ig чтобы выделить
Второй чисто перловый.
В общем регексы - сила!


Ага,т.е. должно быть:
preg_match("/http:\/\/(.*?)\.mp3/i",$page,$matches);

А почему выражение (.*?) в скобках?
Ведь элементам массива присвоются результаты,соответствующие ему тоже(без "http://" и ".mp3")?
И ещё:
Как в регулярное выражение вставить переменную?

4.7K
28 августа 2005 года
Extractor
151 / / 26.08.2005
Цитата:
Originally posted by FIRESTARTER
Ага,т.е. должно быть:
preg_match("/http:\/\/(.*?)\.mp3/i",$page,$matches);

А почему выражение (.*?) в скобках?
Ведь элементам массива присвоются результаты,соответствующие ему тоже(без "http://" и ".mp3")?
И ещё:
Как в регулярное выражение вставить переменную?


Это для примера. В скобках обьявляется начало субпатерна, т.е. найденное соответствующее вырвжению в скобках будет находится в первом(по индексу т.е. - 1) элементе массива, если во всем регулярном выражении будет еще субпатерны они займут места(в массиве) по очереди.
[COLOR=darkblue]Пример[/COLOR]

 
Код:
$str = "http";
preg_match("/$str(:\/\/)(.*?)\.(mp3)/i",$page,$matches);

$matches[1] - "http://"
$matches[2] - все символы до ".mp3"
$matches[3] - "mp3"


по поводу вставки переменной в рэгэксп - $str
и можно конечно и без скобок, но тогда в найденном будут и не нужные символы, "abc.*?z" найдет строку которая начинается с abc и заканчивается z, "abc(.*?)z" найдет все что находится между abc и z (естсно нулевой элемент будет содержать то как если бы скобок не было т.е. все)
2.1K
04 сентября 2005 года
FIRESTARTER
90 / / 29.05.2005
Короче создал скрипт.
Вот исходник:
<?
require "nocache.php";
echo '<HTML><HEAD><LINK href="http://dust.jino-net.ru/functions/style.css" rel="stylesheet">;
echo "<TITLE>GET URLS FROM PAGE</TITLE></HEAD><BODY>";
echo "<H3>Выковыривание нужных ссылок из страниц.</H3>";
echo "<FORM action=\"http://dust.jino-net.ru/tools/geturls.php\" method="GET">";
echo "Введите адрес:
<INPUT type=\"text\" name=\"addr\">
Расширение:<INPUT type=\"text\" name=\"ext\">
";
echo "<INPUT type=\"submit\" name=\"GO\" value=\"GO!\"></FORM>
";
//
//
if(isset($addr)){
$file=fopen($addr,"r");
$code=fread($file,filesize($file));
fclose($file);
$regexp="/http:\/\/.+".$ext."/i";
preg_match_all($regexp,$code,$results);
echo "<DIV class=\"block\">Результаты:
";
for($i=1;$i=<count($results);$i++){
if($ext=="m3u" or $ext=="M3U"){
$file=fopen($results[$i],"r");
$addres=fread($file,filesize($file));
fclose($file);
echo "<A href=\'$addres\'>$addres</A>
";
}
echo "<A href=\'$results[$i]\' target=\"GO\">0$i</A>
";
}
echo "</DIV></BODY></HTML>";
}

?>
Сервер почему-то выдаёт странную ошибку:
http://dust.jino-net.ru/tools/geturls.php
В 31 строке содержится только ?>
4.7K
06 сентября 2005 года
Extractor
151 / / 26.08.2005
Цитата:
Сервер почему-то выдаёт странную ошибку:
http://dust.jino-net.ru/tools/geturls.php В 31 строке содержится только


Сразу скажу что текст скрипта содержит кучу ошибок.
1. В 1-ой строке echo не закрыта каычка
2. В 4-ой эхе не заслешены кавычки у GET

ну и т.д. лень вспоминать что там еще, просто приведу переделанный текст скрипта

Код:
<?

$use_curl = false;

if (!class_exists('curl'))
 {
  $use_curl = @dl('php_curl.dll');
 }

function URL_GetFile($URL,$Proxy=false,$user_agent="Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90)")
 {
  global $use_curl;

  if ($use_curl)
   {
    $ch = curl_init($URL);

    curl_setopt($ch,CURLOPT_USERAGENT,$user_agent);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);

    if ($Proxy)
     {
      curl_setopt($ch,CURLOPT_PROXY,$Proxy);
     }

    $URLpage = curl_exec($ch);

    curl_close($ch);

    return($URLpage);
   }
  else
   {
    return false;
   }
 }

echo "<HTML><HEAD>";
echo "<TITLE>GET URLS FROM PAGE</TITLE></HEAD><BODY>";
echo "<H3>Выковыривание нужных ссылок из страниц.</H3>";
echo "<FORM action=\"dd.php\" method=\"post\">";
echo "Введите адрес:
<INPUT type=\"text\" name=\"addr\">
Расширение:<INPUT type=\"text\" name=\"ext\">
"
;
echo "<INPUT type=\"submit\" name=\"GO\" value=\"GO!\"></FORM>
"
;
//
//
$addr = $_POST['addr'];
$ext  = $_POST['ext'];

if(isset($addr))
 {
  if ($code = URL_GetFile($addr))
   {
    $regexp="/<a.*?href=[\"\']([\w\.\/:_\%\!\d\'\"]*?$ext)[\"\'].*?>/is";
    preg_match_all($regexp,$code,$results);

    echo "<DIV class=\"block\">Результаты:
"
;

    foreach($results[1] as $key=>$text)
     {
      echo $key." - $text
\r\n"
;

/*      if(($ext=="m3u") || ($ext=="M3U"))
       {
        $file=fopen($results[$i],"r");
        $addres=fread($file,filesize($file));
        fclose($file);
        echo "$addres
";
       }

      echo "0$i
";*/

     }

    echo "</DIV></BODY></HTML>";
   }
  else
   {
    echo "error, url dont open";
   }
 }

?>

регексп должен быть такой, парсер форума постарался
$regexp="/<a.*?href=[\"\']([\w\.\/:_\%\!\d\'\"]*?$ext)[\"\'].*?>/is";
а да еще, модуль курл подключается для винды, для юнихов по другому, еще он может не работать на некоторых серверах, потому как отрублено... это касается и fopen
2.1K
06 сентября 2005 года
FIRESTARTER
90 / / 29.05.2005
Спасибо.
Подправил свой код.
Ваш тоже загрузил на сайт:
Мой
Ваш
Ошибки у меня не выдаются,но не работает.
Ваш скрипт сообщает,что не может открыть файл...
4.7K
07 сентября 2005 года
Extractor
151 / / 26.08.2005
Цитата:
Originally posted by FIRESTARTER
Спасибо.
Подправил свой код.
Ошибки у меня не выдаются,но не работает.
Ваш скрипт сообщает,что не может открыть файл...


обратите внимание на подключение курл библиотеки. скорее всего она на этом сервере отрублена(нужно у администрации узнать), а для проверки рэгэкспов используйте сохраненый хтмл, т.е. локальный файл

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог