найти ближайший номер к первому появлению символа - PullRequest
0 голосов
/ 15 июня 2009
<?php
$url = 'here i give a url';

$raw = file_get_contents($url);

preg_match('/\w(\d*).*?\$/',$raw,$matches);


echo $matches;
?>

на данном внешнем веб-сайте мне нужно ближайший номер к первому появлению символа здесь символ - $

это то, что я пытался сейчас, я просто напечатал "массив"

Ответы [ 4 ]

2 голосов
/ 15 июня 2009

Правильно ли я интерпретирую ваш вопрос, если вы, учитывая следующее:

<div>
   <span>12.92$</span>
   <span>24.82$</span>
</div>

хотите вернуть 12,92 $? То есть Вы хотите первое вхождение суммы денег с веб-сайта?

Если это так, попробуйте следующее:

// Will find any number on the form xyz.abc.
// Will NOT cope with formatting such as 12 523.25 or 12,523.25
$regex = '/(\d+(:?.\d+)?) *([$])/'
preg_match($regex, $website, $matches);

//matches[0] => 123.45$
//matches[1] => 123.45
//matches[2] => $

Еще одна, более амбициозная попытка (которая может случиться чаще):

// Will find any number on the form xyz.abc.
// Attempts to cope with formatting such as 12 523.25 or 12,523.25
$regex = '/(\d{1,3}(:?[, ]?\d{3})*(:?.\d+)?) *([$])/'
preg_match($regex, $website, $matches);

//matches[0] => 12 233.45$
//matches[1] => 12 233.45
//matches[2] => $
0 голосов
/ 17 июня 2009
$regex = '/([$])* (\d+(:?.\d+)?)    /' ;
preg_match($regex, $str, $matches);

это работает, я только что переключил стороны за 199 долларов!

теперь мне нужна также опция, чтобы получить только второй внешний вид:

code .....
$199 ......

....
$299
....

совпадений [2] должно печатать 299

0 голосов
/ 15 июня 2009

Используйте preg match с $ match [1], но вам нужно изменить свое регулярное выражение на

preg_match('/\w(\d+).*?\$/',$raw,$matches);

* соответствует нулю или более раз, когда действительно требуется хотя бы одна цифра. Измените его на +, чтобы вы соответствовали одному или нескольким.

0 голосов
/ 15 июня 2009

если вы напечатали массив> try echo $ match [0]; или echo $ соответствует [1];

// обновление

// test2.php lkadf $ lksajdf;

// test.php

$url = 'test2.php';
$raw = file_get_contents($url);

preg_match('/\w(\d*).*?\$/',$raw,$matches);

echo $matches[0]; ?>

Будет выводить:

lkadf $ (первая часть).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...