Eregi replace url dingetje
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
$str = preg_replace("/str=\"(?!http:\\\\)(.+?)\"/", "src=\"" . $url . "\\1\"", $str);
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
$str = preg_replace("/str=\"(?!http://)(.+?)\"/", "src=\"" . $url . "\\1\"", $str);
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
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
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);
?>
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.