Eregi replace url dingetje
Ik heb enkele waardes:
De server root: "http://www.domein.suffix/subdir/"
een string waarin enkele dingen voorkomen als "src="plaatje.gif""
Hoe krijg ik het nou voormekaar dat dat elke src nu de volledige url in zich heeft? dus src="http://www.domein.suffix/subdir/plaatje.gif"
Ik ben namelijk met een script bezig die alleen de tekst in een site omzet naar 1337-taal.
hier is het script en zoals je ziet poort hij de sources nog niet.
De server root: "http://www.domein.suffix/subdir/"
een string waarin enkele dingen voorkomen als "src="plaatje.gif""
Hoe krijg ik het nou voormekaar dat dat elke src nu de volledige url in zich heeft? dus src="http://www.domein.suffix/subdir/plaatje.gif"
Ik ben namelijk met een script bezig die alleen de tekst in een site omzet naar 1337-taal.
hier is het script en zoals je ziet poort hij de sources nog niet.
Edit:
Gewijzigd op 21/02/2005 20:40:00 door Joris van Rooij
volgens mij returned dat de root... maar ik denk dat het de root is van je .php script maar okej :)
pcies, dat is de root van mijn server, maar dat moet juist de root worden van de server die ik dan leech
ik zou zeggen:
$str = preg_replace("/str=\"(?!http:\\\\)(.+?)\"/", "src=\"" . $url . "\\1\"", $str);
$str = preg_replace("/str=\"(?!http:\\\\)(.+?)\"/", "src=\"" . $url . "\\1\"", $str);
Hmmm, het schijnt niet te werken. Maar, niet dat ik nog veel van deze regular expressions snap, is het niet http:// ipv http:\\ ?
Of heb ik het hier bij het verkeerde eind?
Of heb ik het hier bij het verkeerde eind?
Edit:
Ik zal even de code posten wordt het (hopelijk) duidelijk voor iedereen
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php
function leet($key) {
$known = array('o', 'e', '<', '>', 'w', 'a');
$leet = array('0', '3', '*', '*', '\\\'', '4');
if(rand(0, 1) == 1) {
$key = strtoupper($key);
} else {
$key = strtolower($key);
}
$key = str_replace($known, $leet, $key);
return stripslashes($key);
}
if (!$_POST['url']) {
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">
<input type="text" name="url"><input type="submit" value="1337 Th1z SiT3!">
</form>';
} else {
if (substr($_POST['url'], 0, 7) == 'http://') {
/*
root bepalen, doe ik dadelijk wel even
*/
$root = '--ROOT--';
$cont = file($_POST['url']);
if ($cont) {
foreach($cont as $line) {
$line = preg_replace("/str=\"(?!http:\\\\)(.+?)\"/", "src=\"" . $root . "\\1\"", $line); //phphulp.nl
$bytes = preg_split('//', str_replace(' ', ' ', $line));
//$tagopen = 'no';
foreach ($bytes as $byte) {
if ($byte == '<') {
$tagopen = 'yes';
}
if ($tagopen == 'yes' && $byte == '>') {
$tagopen = 'no';
}
if ($tagopen == 'no' && $byte != '<' && $byte != '>') {
echo leet($byte);
}
if ($byte == '<' || $byte == '>' || $tagopen == 'yes') {
echo $byte;
}
}
echo "\r\n";
}
} else {
echo 'U n00b!';
}
} else {
echo 'U n00b!';
}
}
?>
function leet($key) {
$known = array('o', 'e', '<', '>', 'w', 'a');
$leet = array('0', '3', '*', '*', '\\\'', '4');
if(rand(0, 1) == 1) {
$key = strtoupper($key);
} else {
$key = strtolower($key);
}
$key = str_replace($known, $leet, $key);
return stripslashes($key);
}
if (!$_POST['url']) {
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">
<input type="text" name="url"><input type="submit" value="1337 Th1z SiT3!">
</form>';
} else {
if (substr($_POST['url'], 0, 7) == 'http://') {
/*
root bepalen, doe ik dadelijk wel even
*/
$root = '--ROOT--';
$cont = file($_POST['url']);
if ($cont) {
foreach($cont as $line) {
$line = preg_replace("/str=\"(?!http:\\\\)(.+?)\"/", "src=\"" . $root . "\\1\"", $line); //phphulp.nl
$bytes = preg_split('//', str_replace(' ', ' ', $line));
//$tagopen = 'no';
foreach ($bytes as $byte) {
if ($byte == '<') {
$tagopen = 'yes';
}
if ($tagopen == 'yes' && $byte == '>') {
$tagopen = 'no';
}
if ($tagopen == 'no' && $byte != '<' && $byte != '>') {
echo leet($byte);
}
if ($byte == '<' || $byte == '>' || $tagopen == 'yes') {
echo $byte;
}
}
echo "\r\n";
}
} else {
echo 'U n00b!';
}
} else {
echo 'U n00b!';
}
}
?>
Gewijzigd op 21/02/2005 21:21:00 door Joris van Rooij
ow sorry :P
$str = preg_replace("/str=\"(?!http://)(.+?)\"/", "src=\"" . $url . "\\1\"", $str);
$str = preg_replace("/str=\"(?!http://)(.+?)\"/", "src=\"" . $url . "\\1\"", $str);
Warning: preg_replace(): Unknown modifier '/' in /var/www/1337-site.php on line 27
en als ik die dingen ga escapen krijg ik een lege pagina te zien
en als ik die dingen ga escapen krijg ik een lege pagina te zien
Gewijzigd op 21/02/2005 21:31:00 door Joris van Rooij
dubbele punt escapen
werkt dus ook niet
Warning: preg_replace(): Unknown modifier '/' in /var/www/1337-site.php on line 27
met deze opdrachtlijn:
en zo krijg ik een lege pagina:
Ow, ben ik nou blind......
Ik vervang nu iets beginnend met http:// met http://root
In de originele src staat helemaal geen http://......
doet nu ook niet zijn werk...
Warning: preg_replace(): Unknown modifier '/' in /var/www/1337-site.php on line 27
met deze opdrachtlijn:
Code (php)
1
2
3
2
3
<?php
$line = preg_replace("/str=\"(?!http\://)(.+?)\"/", "src=\"" . $root . "\\1\"", $line); //phphulp.nl
?>
$line = preg_replace("/str=\"(?!http\://)(.+?)\"/", "src=\"" . $root . "\\1\"", $line); //phphulp.nl
?>
en zo krijg ik een lege pagina:
Code (php)
1
2
3
2
3
<?php
$line = preg_replace("/str=\"(?!http\:\/\/)(.+?)\"/", "src=\"" . $root . "\\1\"", $line); //phphulp.nl
?>
$line = preg_replace("/str=\"(?!http\:\/\/)(.+?)\"/", "src=\"" . $root . "\\1\"", $line); //phphulp.nl
?>
Ow, ben ik nou blind......
Ik vervang nu iets beginnend met http:// met http://root
In de originele src staat helemaal geen http://......
Code (php)
1
2
3
2
3
<?php
$line = preg_replace("/str=\"(.+?)\"/", "src=\"".$root."\\1\"", $line); //phphulp.nl
?>
$line = preg_replace("/str=\"(.+?)\"/", "src=\"".$root."\\1\"", $line); //phphulp.nl
?>
doet nu ook niet zijn werk...
Gewijzigd op 21/02/2005 22:25:00 door Joris van Rooij
even mijn code uitleggen vervang alle src=\" dingen waar GEEN http:// voor staat ennem in het voorbeeldje staat str=\", ik heb er nog een foutje uit gehaald, zo werkt ie bij mij :)
Code (php)
1
2
3
2
3
<?php
$line = preg_replace("/src=\"(?!http:\/\/)(.+?)\"/", "src=\"" . $root . "\\1\"", $line);
?>
$line = preg_replace("/src=\"(?!http:\/\/)(.+?)\"/", "src=\"" . $root . "\\1\"", $line);
?>
dat str had ik helemaal niet gezien joh....
Enne, hij werkt! Nu kan ik het nog aanpassen voor de href en dat soort mikmak.
Ontzettend bedant voor die "wanneer er geen http:// voor staat" functie. IK zat daar al mee in mn maag.
Het resultaat wordt dadelijk best wel leuk. Post ik hem nog bij scripts ook.
Enne, hij werkt! Nu kan ik het nog aanpassen voor de href en dat soort mikmak.
Ontzettend bedant voor die "wanneer er geen http:// voor staat" functie. IK zat daar al mee in mn maag.
Het resultaat wordt dadelijk best wel leuk. Post ik hem nog bij scripts ook.




