Functie over preg_replace resultaat.
Beste allemaal,
ik heb de volgende regel:
Dit werkt prima. Van alle h2 elementen wordt een link gemaakt etc. Nu wil ik echter dat er nog wat bewerkingen over het resultaat worden uitgevoerd. Spaties moeten worden vervangen door een - en alles moet lowercase worden uitgevoerd.
nu heb ik wat lopen spitten op php.net en ik kwam de volgende constructie tegen:
Alleen ik krijg dit maar niet juist. Heeft iemand ervaring met deze handelingen?
ik heb de volgende regel:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$content = '<h2>Dit is kop 1</h2>
<p>Dit is tekst 1</p>
<h2>Dit is kop 2</h2>
<p>Dit is tekst 2</p>';
$content = preg_replace('#\<h2>(.+?)\</h2>#si', '<a href="#top"><'.$element.' id="\\1" name="\\1">\\1</'.$element.'></a>', $content);
echo $content;
?>
$content = '<h2>Dit is kop 1</h2>
<p>Dit is tekst 1</p>
<h2>Dit is kop 2</h2>
<p>Dit is tekst 2</p>';
$content = preg_replace('#\<h2>(.+?)\</h2>#si', '<a href="#top"><'.$element.' id="\\1" name="\\1">\\1</'.$element.'></a>', $content);
echo $content;
?>
Dit werkt prima. Van alle h2 elementen wordt een link gemaakt etc. Nu wil ik echter dat er nog wat bewerkingen over het resultaat worden uitgevoerd. Spaties moeten worden vervangen door een - en alles moet lowercase worden uitgevoerd.
nu heb ik wat lopen spitten op php.net en ik kwam de volgende constructie tegen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
function toUrl($var){
//deze functie uitbreiden zodat alles werkt zoals het moet...
return strtolower(str_replace(' ', '-', $var));
}
$content = '<h2>Dit is kop 1</h2>
<p>Dit is tekst 1</p>
<h2>Dit is kop 2</h2>
<p>Dit is tekst 2</p>';
$content = preg_replace_callback('#\<h2>(.+?)\</h2>#si', 'toUrl', $content);
echo $content;
?>
function toUrl($var){
//deze functie uitbreiden zodat alles werkt zoals het moet...
return strtolower(str_replace(' ', '-', $var));
}
$content = '<h2>Dit is kop 1</h2>
<p>Dit is tekst 1</p>
<h2>Dit is kop 2</h2>
<p>Dit is tekst 2</p>';
$content = preg_replace_callback('#\<h2>(.+?)\</h2>#si', 'toUrl', $content);
echo $content;
?>
Alleen ik krijg dit maar niet juist. Heeft iemand ervaring met deze handelingen?
Gewijzigd op 01/01/1970 01:00:00 door Crispijn -
Gesponsorde koppelingen:
Zet dit bovenin je script.
$match bestaat niet.
$match bestaat niet.
In $var zit een array met matches. $var[0] is de hele string die hij matcht, $var[1] is de submatch, dat wat tussen () stond, etc.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
function toUrl($var){
//deze functie uitbreiden zodat alles werkt zoals het moet...
$link = strtolower(str_replace(' ', '-', $var[1])) . '.html';
return sprintf('<h2><a href="%s">%s</a></h2>',
$link,
$var[1]);
}
$content = '<h2>Dit is kop 1</h2>
<p>Dit is tekst 1</p>
<h2>Dit is kop 2</h2>
<p>Dit is tekst 2</p>';
$content = preg_replace_callback('#\<h2>(.+?)\</h2>#si', 'toUrl', $content);
echo $content;
?>
function toUrl($var){
//deze functie uitbreiden zodat alles werkt zoals het moet...
$link = strtolower(str_replace(' ', '-', $var[1])) . '.html';
return sprintf('<h2><a href="%s">%s</a></h2>',
$link,
$var[1]);
}
$content = '<h2>Dit is kop 1</h2>
<p>Dit is tekst 1</p>
<h2>Dit is kop 2</h2>
<p>Dit is tekst 2</p>';
$content = preg_replace_callback('#\<h2>(.+?)\</h2>#si', 'toUrl', $content);
echo $content;
?>
Het heeft even geduurd voordat ik er mee verder kon maar het is zo ver:
Jelmer, je bent geweldig. Het probleem is opgelost! Dank je wel!
Jelmer, je bent geweldig. Het probleem is opgelost! Dank je wel!



