Что-то вроде этого:
$code = <<<STR
<script type="text/javascript"><!--
google_ad_client = "pub-1234567890987654";
google_ad_slot = "1234567890";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript" src="path-to-google-script"></script>
STR;
if (preg_match('/google_ad_client = "([^"]+)";/', $code, $m)) {
$google_ad_client = $m[1];
}
if (preg_match('/google_ad_slot = "([^"]+)";/', $code, $m)) {
$google_ad_slot = $m[1];
}
var_dump($google_ad_client, $google_ad_slot);
.
И вы получите в качестве вывода:
string 'pub-1234567890987654' (length=20)
string '1234567890' (length=10)
(протестировано со второй частью кода и, похоже, тоже работает нормально)
В качестве меры предосторожности вы можете также захотеть изменить регулярные выражения на что-то вроде этого, поэтому принимайте код такого же типа без пробелов (или с любым количеством пробелов) :
if (preg_match('/google_ad_client\s*=\s*"([^"]+)"\s*;/', $code, $m)) {
$google_ad_client = $m[1];
}
if (preg_match('/google_ad_slot\s*=\s*"([^"]+)"\s*;/', $code, $m)) {
$google_ad_slot = $m[1];
}
И, просто для удовольствия, то же самое с одним регулярным выражением, если вы хотите получить несколько частей информации:
$results = array();
if (preg_match_all('/(google_ad_client|google_ad_slot)\s*=\s*"([^"]+)"\s*;/', $code, $m)) {
$count = count($m[1]);
for ($i = 0 ; $i<$count ; $i++) {
$results[$m[1][$i]] = $m[2][$i];
}
}
// TODO : test is set (see isset) before using those
var_dump($results['google_ad_client'], $results['google_ad_slot']);
Что даст вам тот же результат:
string 'pub-1234567890987654' (length=20)
string '1234567890' (length=10)