Hi,
ich habe ein Problem mit diesem Syntax:
das gleiche hier:
Und zwar sucht er sich den ersten <a und geht dann solange weiter bis der $www gefunden wurde.
Das passiert aber komischerweise nur, wenn im $content erst ein <a href=" kommt und dann der eigentliche $www mit a href=' verlinkt wurde.
Hier der vollständige Test-Code:
Ausgabe $matches:
Ich habe doch extra ungreedy zwischen <a und href= angegeben, also warum verhält er sich trotzdem greedy?
EDIT:
Auch diese Variante gibt $matches[1] wie zuvor aus:
ich habe ein Problem mit diesem Syntax:
PHP-Code:
if (preg_match('#<a(.*?href=("|\')' . $www . '[/ ]?("|\').*?)>.*?</a>#is', $content, $matches)) {
PHP-Code:
if (preg_match('#<a(.*href=("|\')' . $www . '[/ ]?("|\').*)>.*</a>#Uis', $content, $matches)) {
Das passiert aber komischerweise nur, wenn im $content erst ein <a href=" kommt und dann der eigentliche $www mit a href=' verlinkt wurde.
Hier der vollständige Test-Code:
PHP-Code:
$content = '<a href="/">Logo</a>
Content<br />
<a href=\'http://domain.de\'>Link</a>
Footer<br />';
$website = 'http://domain.de';
$www = str_replace('.', '\.', $website);
$matches = array();
if (preg_match('#<a(.*?href=("|\')' . $www . '[/ ]?("|\').*?)>.*?</a>#is', $content, $matches)) {
print_r($matches);
}
PHP-Code:
Array
(
[0] => <a href="/">Logo</a>
Content<br />
<a href='http://domain.de'>Link</a>
[1] => href="/">Logo</a>
Content<br />
<a href='http://domain.de'
[2] => '
[3] => '
)
EDIT:
Auch diese Variante gibt $matches[1] wie zuvor aus:
PHP-Code:
if (preg_match("#<a(.*href='" . $www . "[/ ]?'.*)>.*</a>#Uis", $content, $matches)) {
Kommentar