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.

[edit]
hier is de source
[/edit]
<? echo __FILE__; ?>

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);
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?

[edit] Ik zal even de code posten wordt het (hopelijk) duidelijk voor iedereen[/edit]

<?php
function leet($key) {
$known = array('o', 'e', '<', '>', 'w', 'a');
$leet = array('0', '3', '*', '*', '&#092;&#092;\'', '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('&nbsp;', ' ', $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!';
}
}
?>
ow sorry :P

$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
dubbele punt escapen
werkt dus ook niet
Warning: preg_replace(): Unknown modifier '/' in /var/www/1337-site.php on line 27

met deze opdrachtlijn:
<?php
$line = preg_replace("/str=\"(?!http\://)(.+?)\"/", "src=\"" . $root . "\\1\"", $line); //phphulp.nl
?>

en zo krijg ik een lege pagina:
<?php
$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://......

<?php
$line = preg_replace("/str=\"(.+?)\"/", "src=\"".$root."\\1\"", $line); //phphulp.nl
?>
doet nu ook niet zijn werk...
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 :)

<?php
$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.

Reageren