Поиск по шаблону...
2) В этом файле есть строка <a href="?id=X">LINK</a>
Как мне найти это значение X?
P.S. Все на PHP
Код:
$file='данные файла, которые считал';
$x="переменная, которая содержит X";
$x=preg_replace('#<a[[:space:]]href="\?id=(.*)">.*</a>#is',"\1",$file);
$x="переменная, которая содержит X";
$x=preg_replace('#<a[[:space:]]href="\?id=(.*)">.*</a>#is',"\1",$file);
$x = 'твоя переменная' ; //твоя переменная
$text = '__любой текст__<a href="?id=твоя переменная">LINK</a>__любой текст__' ;
$nach = StrPos ( $text , '<a href="?id=' ) + strlen ( '<a href="?id=' ) ;
$lenght = StrLen ( $x ) ; // считаем длинну твоей переменной ;
$value = SubStr ( $text , $nach , $lenght ) ;
Echo $value ;
?>
lDaniil, долговато и некрасиво... Ссори :(
Код:
$file='данные файла, которые считал';
$x="переменная, которая содержит X";
$x=preg_replace('#<a[[:space:]]href="\?id=(.*)">.*</a>#is',"\1",$file);
$x="переменная, которая содержит X";
$x=preg_replace('#<a[[:space:]]href="\?id=(.*)">.*</a>#is',"\1",$file);
Чет данный пример не работает : (
[QUOTE=lDaniil]<?PHP
$x = 'твоя переменная' ; //твоя переменная
$text = '__любой текст__<a href="?id=твоя переменная">LINK</a>__любой текст__' ;
$nach = StrPos ( $text , '<a href="?id=' ) + strlen ( '<a href="?id=' ) ;
$lenght = StrLen ( $x ) ; // считаем длинну твоей переменной ;
$value = SubStr ( $text , $nach , $lenght ) ;
Echo $value ;
?>[/QUOTE]
Дело в том что если я не знаю эту переменную или ее длину?!
Мне нужно сделать это все через регулярные выражения, но я не умею с ними работать =(
Ну помогите плис кто-ниудь!)))
Код:
$file='данные файла, которые считал';
$x="переменная, которая содержит X";
$temp=array(); # вспомогательный файл для последующей функции
$x=preg_match('#<a(\s)href="\?id=(.*)">.*</a>#is',"\1",$file,$temp);
$x=$temp[2];
$x="переменная, которая содержит X";
$temp=array(); # вспомогательный файл для последующей функции
$x=preg_match('#<a(\s)href="\?id=(.*)">.*</a>#is',"\1",$file,$temp);
$x=$temp[2];
Вроде должен пахать, если не то, то поэкспереминтируй $x=$temp[2], т.е. поменяй индекс массива, но по идее это обязано заработать...
Код:
$file='данные файла, которые считал';
$x="переменная, которая содержит X";
$temp=array(); # вспомогательный файл для последующей функции
$x=preg_match('#<a(\s)href="\?id=(.*)">.*</a>#is',"\1",$file,$temp);
$x=$temp[2];
$x="переменная, которая содержит X";
$temp=array(); # вспомогательный файл для последующей функции
$x=preg_match('#<a(\s)href="\?id=(.*)">.*</a>#is',"\1",$file,$temp);
$x=$temp[2];
Вроде должен пахать, если не то, то поэкспереминтируй $x=$temp[2], т.е. поменяй индекс массива, но по идее это обязано заработать...[/QUOTE]
Warning: preg_match() expects parameter 4 to be long, array given in...
Тогда уж такое выражение пишите...:
Код:
$x = preg_match('/<a.*href=\x22{0,1}.*?\?id=(.*?)\x22{0,1}\s*>.*<\/a>?/is', $file ,$temp) ? $temp[1] : null;
И не забывайте, что preg_match найдёт первое вхождение (или не найдёт) - в первом случае $x будет иметь значение $temp[1], во втором - null. Для поиска в тексте всех участков, соответствующих регулярному выражению, нужно использовать preg_match_all() и регулярное выражение будет другим.
Тогда уж такое выражение пишите...:
Код:
$x = preg_match('/<a.*href=\x22{0,1}.*?\?id=(.*?)\x22{0,1}\s*>.*<\/a>?/is', $file ,$temp) ? $temp[1] : null;
И не забывайте, что preg_match найдёт первое вхождение (или не найдёт) - в первом случае $x будет иметь значение $temp[1], во втором - null. Для поиска в тексте всех участков, соответствующих регулярному выражению, нужно использовать preg_match_all() и регулярное выражение будет другим.[/QUOTE]
ммм.....я тут столкнулся с такой проблемой, а если три параметра? напрмер имеется в строчке есть такое выражение:
function('text', X, Y, Z)
как выразить X, Y, Z?
Заранее благодарен!