Toon posts:

regex probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil een stukje tekst knippen uit een regel dus heb ik volgende code geschreven:

Heb het even een stuk gemakkelijker gemaakt om de bedoeling duidelijk te maken.

PHP:
1
2
3
4
5
$data = "blablabla <h1>test</h1>";

ereg ("<h1>(.*)</h1>", $data, $out);

echo $out[0];


hier komt dus uit: <h1>test</h1>

nu wil ik graag alleen test hebben maar ik heb dus geen idee hoe dat moet.

  • -Tibo-
  • Registratie: Januari 2002
  • Niet online

-Tibo-

ow = teh

print_r($out) en zie dat de uitkomst staat in (uit me hoofd) $out[1]

Verwijderd

Topicstarter
helaas niet.

output van print_r($out);

Array (
[0] =>
<h1>Merck Sharp & Dohme</h1>
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
)

Verwijderd

*foetsie*

[ Voor 0% gewijzigd door Verwijderd op 11-09-2002 16:43 . Reden: slaapwandelt :) ]


  • Apollo_Futurae
  • Registratie: November 2000
  • Niet online
PHP:
1
2
3
4
5
6
7
8
9
$matches = array();
if (preg_match('!<h1>(.*)</h1>!i', $data, $matches))
{
    echo $matches[1];
}
else
{
    echo 'Geen match';
}

Pas de replâtrage, la structure est pourrie.


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 23:52
Hier werkt het gewoon hoor:

PHP:
1
2
3
4
5
$data = "blablabla <h1>test</h1>";
 
ereg ("<h1>(.*)</h1>", $data, $out);
 
echo $out[1];


Conform de documentatie: $out[0] bevat de string de substring die matcht ("<h1>test</h1>"), $out[1] bevat de substring tussen de eerste set haakjes ("test").

Verwijderd

Topicstarter
Hmmm ik zie net dat ik bij het uitproberen inderdaad de expressie veranderd heb... :'(

ik moests gewoon $out[1] echoen ipv $out[0] bedankt allemaal

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 23:52
Denk nog wel aan de case (zoals Apollo_Futurae aangaf) en het non-greedy matchen (waar Nokia op wees voordat 'ie z'n reply editte).
Pagina: 1