[PHP] Tekst tussen tags in array zetten.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo allen,

Ik zit al de hele dag te dubben over hoe ik dit moet aanpassen. Echter schiet mijn kennis tekort, of is mijn koppijn te groot :/

Probleem:

Elk tekst-voorkomen die tussen twee tags staat in een array zetten.

Voorbeeld:

<p>Dit is para een</p> <p> dit is para twee</p>
<p class="leuk als dit ook werkt">para nummer drie</p>

wordt:
Array ( "Dit is para een", "dit is para twee", "para nummer drie")

_/-\o_

Acties:
  • 0 Henk 'm!

Verwijderd

Reguliere expressies zijn je vriend :).
En P&W is ook je vriend :) (verkeerde subforum).

Bij Reguliere Expressies moet je denken aan dit soort patronen:
[pseudo-code]
"<(alles)>(alles)</(alles)>"
[/pseudo-code]
De middelste "alles" moet je dan hebben,

Succes.

Linkjes:
http://nl2.php.net/manual/nl/ref.pcre.php
http://nl2.php.net/manual/nl/function.preg-replace.php
Programming & Webscripting

Edit: :+ is niet nodig hoor flashin, jou link geeft een zeer goede (Nederlandse) uitleg over reguliere expressies :).

[ Voor 68% gewijzigd door Verwijderd op 01-07-2004 17:53 ]


Acties:
  • 0 Henk 'm!

  • flashin
  • Registratie: Augustus 2002
  • Laatst online: 17-12-2023
Dit kan dmv van regular expressions heel makkelijk.

http://gerard.yoursite.nl/got/regex-tut/reference.html

edit: :+

[ Voor 6% gewijzigd door flashin op 01-07-2004 17:49 ]


Acties:
  • 0 Henk 'm!

Verwijderd

De meest uitgebreide Regular Expression tutorial site

De regex die jij nodig hebt:

JavaScript:
1
var re = new RegExp("<p([^ |>]*)([^>]*)>(.*?)<\/p([^ |>]*)([^>]*)>", "i");

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Fock-it... verkeerde forum indeed (had inlogproblemen, daardoor teveel vensters open).

Dat het met reguliere expressies kan weet ik, maar ik krijg het niet zelf voor elkaar :(

Acties:
  • 0 Henk 'm!

  • McVirusS
  • Registratie: Januari 2000
  • Laatst online: 18-09 12:01
* McVirusS schopt 'm over de schutting.

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 01 juli 2004 @ 17:55:
De meest uitgebreide Regular Expression tutorial site

De regex die jij nodig hebt:

JavaScript:
1
2
var re = new 
RegExp("<p([^ |>]*)([^>]*)>(.*?)<\/p([^ |>]*)([^>]*)>", "i");
Let wel even op:
-Dit is alleen voor stukken tekst die tussen het element "<p>" staan
-Gebruik liever een PHP regex, en de /sie modfiers :)

Dan krijg je dit:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
function mijnfunctie($input)
{
  global $stukken;
  //Zonder global doet ie het bij mij niet (php 4.3.4)
  $stukken[] = $input;
}

$regels_html = "<p style=\"Foo\">Foo</p> <b>And me?</b> <p>Another Foo</p>";
$regels_html = preg_replace("/<p(.*?)>(.*?)<\/p(.*?)>/sie",
 "mijnfunctie(\"$2\")", $regels_html);

echo "<pre>";
print_r($stukken);
echo "</pre>";
?> 

[ Voor 245% gewijzigd door Verwijderd op 01-07-2004 18:32 ]


Acties:
  • 0 Henk 'm!

  • Billie
  • Registratie: Januari 2003
  • Laatst online: 16-09 20:27
Hmm, misschien is array_push ook handig?

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 01 juli 2004 @ 18:13:
[...]

Let wel even op:
-Dit is alleen voor stukken tekst die tussen het element "<p>" staan
-Gebruik liever een PHP regex, en de /sie modfiers :)

Dan krijg je dit:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
function mijnfunctie($input)
{
  global $stukken;
  //Zonder global doet ie het bij mij niet (php 4.3.4)
  $stukken[] = $input;
}

$regels_html = "<p style=\"Foo\">Foo</p> <b>And me?</b> <p>Another Foo</p>";
$regels_html = preg_replace("/<p(.*?)>(.*?)<\/p(.*?)>/sie",
 "mijnfunctie(\"$2\")", $regels_html);

echo "<pre>";
print_r($stukken);
echo "</pre>";
?> 
waarom gebruik je een preg_replace als een preg_match_all ook voldoende is, ik kan me namelijk niet voorstellen dat dit sneller is, en nodig is het zeker niet.

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 01 juli 2004 @ 19:47:
[...]


waarom gebruik je een preg_replace als een preg_match_all ook voldoende is, ik kan me namelijk niet voorstellen dat dit sneller is, en nodig is het zeker niet.
Umm :+
Geen echte onderbouwde mening, uit gewenning denk ik; ik gebruik altijd preg_replace :)
Pagina: 1